弹丸轨迹略微偏离 Unity2D
Trajectory of projectile slightly off Unity2D
我有一个简单的大炮,我正在尝试编程以发射炮弹。我有 4 个游戏 objects:
- 坦克object
- 一个枢轴 Object(child 坦克)
- 一门大炮 Object(child 枢轴)
- 一个名为 Tip 的空游戏Object,它位于大炮上方(child 大炮)
我的大炮代码object如下:
public class cannon: MonoBehaviour
{
public float power = 1.0f;
public Transform projectile;
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Transform bullet;
Vector2 pos = transform.GetChild(0).position;
bullet = Instantiate(projectile, pos, Quaternion.identity);
Rigidbody2D bullet_rb = bullet.GetComponent<Rigidbody2D>();
bullet_rb.AddForce(pos * power);
}
}
}
一切似乎都正常,直到我查看了炮弹直接沿着 x-axis 瞄准时的弹道。施加的力仍然有一个小的 y 分量,这是我没有预料到的,也是我不希望的。
这是一个 gif:
是什么导致了这种行为?
您添加的力是 pos
(乘以标量 power
)...您的大炮在 y 轴上的位置高于零,因此它以 y 发射抵消。我假设它也有一个 x 偏移量,只是不太明显,因为基数 (tank
) 以 x 为中心,而它在 y 的中心上方。尝试将整个坦克设置从场景根部移开;由于使用 pos
.
的错误,您可能会看到射弹的力量出现巨大的峰值
你想要的是一个表示纯方向的向量。一个也是 标准化 (1 的量级)。在这种情况下,从旋转tip
或cannon
.
的角度来看,要么right
(在2d中前进)要么up
我有一个简单的大炮,我正在尝试编程以发射炮弹。我有 4 个游戏 objects:
- 坦克object
- 一个枢轴 Object(child 坦克)
- 一门大炮 Object(child 枢轴)
- 一个名为 Tip 的空游戏Object,它位于大炮上方(child 大炮)
我的大炮代码object如下:
public class cannon: MonoBehaviour
{
public float power = 1.0f;
public Transform projectile;
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Transform bullet;
Vector2 pos = transform.GetChild(0).position;
bullet = Instantiate(projectile, pos, Quaternion.identity);
Rigidbody2D bullet_rb = bullet.GetComponent<Rigidbody2D>();
bullet_rb.AddForce(pos * power);
}
}
}
一切似乎都正常,直到我查看了炮弹直接沿着 x-axis 瞄准时的弹道。施加的力仍然有一个小的 y 分量,这是我没有预料到的,也是我不希望的。
这是一个 gif:
是什么导致了这种行为?
您添加的力是 pos
(乘以标量 power
)...您的大炮在 y 轴上的位置高于零,因此它以 y 发射抵消。我假设它也有一个 x 偏移量,只是不太明显,因为基数 (tank
) 以 x 为中心,而它在 y 的中心上方。尝试将整个坦克设置从场景根部移开;由于使用 pos
.
你想要的是一个表示纯方向的向量。一个也是 标准化 (1 的量级)。在这种情况下,从旋转tip
或cannon
.
right
(在2d中前进)要么up