【问题标题】:Fire bullet in the direction of travel向行进方向发射子弹
【发布时间】:2014-01-07 11:38:03
【问题描述】:

我无法弄清楚如何向 8 个方向中的一个方向发射子弹。

玩家只能指向罗盘方向 0、45、90、135、180 等。

所以我需要一个公式,我可以在 spawnEntity 中使用该公式将子弹以恒定速度朝玩家面对的方向发射。

我试过了;

    sinAngle = Math.cos(90) * 1000;
    cosAngle = Math.sin(90) * 1000;

    bulletX = (this.pos.x);
    bulletY = (this.pos.y);
    return { x: bulletX, y: bulletY, sin: sinAngle, cos: cosAngle };

那么通话是这样的;

   trajectory = this.calculateAngle();
   ig.game.spawnEntity(EntityBullet, trajectory.x, trajectory.y, { vel: { x: trajectory.sin, y: -trajectory.cos } });

但一切都是弧度,我希望它是罗盘度数。

【问题讨论】:

    标签: javascript impactjs


    【解决方案1】:

    如果您只想将度数转换为弧度,那么您只需使用:d * (π/180) 其中d 是度数。

    如果您还希望能够说出指南针的方向(如北、南、东、西),请创建一个枚举并将其转换为度数并使用度数到弧度的函数。

    【讨论】:

    • 如果没有 java 类,这正是我已经拥有的并且不起作用。我正在尝试为数学函数提供罗盘度数,但它们需要弧度。我需要一个基于度数罗盘计算 x 和 y 的函数
    • 那么您是否可以使用角度而不是某种方式来表示 N、S、E、W 等?因为那太微不足道了。正在解决问题...
    • 我现在有了,但 0 度罗盘显示为 0,180 罗盘显示为 270。翻转和反转。我可以围绕它进行编程,但并不觉得这是一个好的解决方案
    • 愚蠢的我,我将我的 cos 值命名为 sin,反之亦然。哦!
    【解决方案2】:

    我已经有一段时间没有进行任何游戏编程了,但是您可以使用 MathHelper.ToDegrees 将您的弧度转换为度数。

    【讨论】:

    • 我实际上有度数,但我认为 cos 和 sin 期望弧度
    • 哦,好的。那将是ToRadians。祝你游戏好运!
    • 感谢您的帮助。和游戏,它更像是一个练习而不是一个真正的项目
    猜你喜欢
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2023-03-15
    • 2013-07-15
    相关资源
    最近更新 更多