突破块游戏的输入

问题描述 投票:0回答:2

我的突破游戏中的动作似乎有些紧张,我不确定为什么。

任何帮助将不胜感激。

private Rigidbody2D rb;
public float speed = 10f;
public float movement;

void Start()
{
    rb = GetComponent<Rigidbody2D>();
}

void Update()
{
    movement = Input.GetAxis("Horizontal");
}


private void FixedUpdate()
{
    rb.MovePosition(transform.position + (Vector3.right * speed * Time.deltaTime * movement));
}
c# unity3d
2个回答
0
投票

Time.deltaTime可能会断断续续。

使用Time.fixedDeltaTime,如documentation中所建议。


0
投票

FixedUpdate内,transform的值可能不同于物理计算的Rigidbody的值。

您应该只使用和更新Rigidbody中的FixedUpdate组件:

//               |
//               V
rb.MovePosition(rb.position + Vector3.right * speed * Time.deltaTime * movement);
© www.soinside.com 2019 - 2024. All rights reserved.