我目前正在开发一些TPS游戏。我有我的玩家模型和相机拍到它的肩膀,并在玩家面前的一些空游戏对象计算子弹的矢量(截图中的黄色菱形)。
我正在为移动平台开发,所以没有鼠标;只是那个指向枪的方向的空游戏对象。
因此,当发生火灾事件时,我想对子弹施加力,它将向正确的方向飞行。这是我的代码
b.transform.position = transform.position;
b.transform.position += transform.forward;
b.SetActive(true);
var rb = b.GetComponent<Rigidbody>();
print((Aim.position - transform.position).normalized);
rb.AddForce((Aim.position - transform.position).normalized * Thrust);
Aim 是指向方向的EmptyGameObject, transform 是GunEnd游戏对象, b 是我的子弹实例。因此,如果我尝试从默认玩家位置拍摄,从GunEnd到Aim对象的游戏正确。
但是,如果我将角色旋转超过90度,则子弹开始以一些奇怪的轨迹飞行
那么,任何人都可以帮助我纠正发送子弹吗?
答案 0 :(得分:0)
当您使用b.transform.position += transform.forward;
移动它的位置时,如果您瞄准时变换不旋转(可以在屏幕截图中看到,它不会像transform.rotate中的组件在y)中保持不变。尝试使用Aim找到的向量移动它,如下所示:
b.transform.position += (Aim.position - transform.position).normalized;