【发布时间】:2017-03-15 16:22:32
【问题描述】:
我刚刚开始了一个小项目,我希望玩家从自上而下的角度控制一艘船。我希望整个事情都使用基于物理的运动。
我的问题是,当我向刚体施加力时,它所附着的物体似乎越远离它的位置,它移动得越快。但是,transform.positions 似乎没问题。
我整理了this little unity package。如果你按 W,你按 W 的时间越长,船就会向上移动并偏离中心。S 会朝另一个方向移动。
代码比较简单:
using UnityEngine;
using System.Collections;
public class TestController : MonoBehaviour {
public float mainThrust = 100;
private Vector3 cameraOffset = new Vector3(0f, 0f, 150f);
private new Rigidbody rigidbody;
void Start () {
rigidbody = GetComponent<Rigidbody>();
}
void FixedUpdate() {
float axisVertical = Input.GetAxis("Vertical");
Vector2 force = new Vector2(0f, axisVertical) * mainThrust * Time.fixedDeltaTime;
rigidbody.AddRelativeForce(force, ForceMode.Impulse);
Camera.main.transform.position = rigidbody.transform.position - cameraOffset;
Debug.Log("camPos: " + Camera.main.transform.position
+ " - rbPos: " + rigidbody.transform.position);
}
}
任何帮助表示赞赏。
谢谢, 妮可
【问题讨论】:
-
如果你能提供截图/视频会有所帮助,因为我不能 100% 确定你的问题是什么。但是,我怀疑由于脚本的执行顺序,您的相机只是落后于您的游戏对象,但我可能是错的。
-
顺便说一句,你可以让相机成为船的孩子,它会自动跟随它。
-
Video 来了。相机似乎不是问题。将相机附加到对象会导致相同的行为。
标签: c# unity3d game-physics