我是初学者。
我正在尝试与MovePosition一起移动多维数据集,它的工作原理很好,但是问题是我无法更改多维数据集的速度。
我为速度创建了一个公共浮动,并将其添加到vector3
Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.deltaTime;
但是它似乎不起作用。
我也尝试将其放在MovePosition
中,但没有任何效果。
public class Movement : MonoBehaviour {
public float speed = 55;
private Rigidbody rb;
public void Start()
{
rb = GetComponent<Rigidbody>();
}
public void FixedUpdate()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.deltaTime;
rb.MovePosition(transform.position + movement);
}
}
只要我改变速度,它就行不通。
答案 0 :(得分:0)
您在Time.deltaTime
部分中使用Time.fixedDeltaTime
而不是FixedUpdate
。
Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.fixedDeltaTime;
答案 1 :(得分:0)
更改这两行:
Vector3 movement = new Vector3(h, 0, v).normalized * speed * Time.deltaTime;
rb.MovePosition(transform.position + movement);
这些:
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
rb.AddForce (movement * speed);
看看是否有帮助
答案 2 :(得分:0)
将FixedUpdate函数重写为以下内容:
public void FixedUpdate()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(h, 0, v).normalized;
rb.velocity = movement * speed;
}
另外,不要将刚体操作乘以deltaTime或fixedDeltaTime;它们已经独立于帧速率,这样做可能会导致奇怪的结果。只需在FixedUpdate中调用它们就足够了。