【发布时间】:2019-08-07 13:41:12
【问题描述】:
在我的游戏中,当玩家触摸特定 GameObject 的对撞机并且玩家按下 X 键时,我想将他的位置更改为另一个 游戏对象。
为此,我使用以下代码
void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.X))
{
// Check Colliders collition
// End of Check Colliders collition
var playerRigidBody = GetComponent<Rigidbody2D>();
playerRigidBody.position = AnotherObject.transform.position;
}
}
我意识到,当我按下 X 键时,玩家经常不会将他的位置更改为另一个 GameObject 的位置。但是,如果我将代码移动到 Update() 方法,它会按预期工作(没有延迟)。
但是我在官方文档和很多博客中读到物理和刚体相关的代码必须放在FixedUpdate而不是Update
所以问题如下:
对于这种情况,不建议将代码放在 Update() 方法中? (请注意,我没有使用力或扭矩)
如果不推荐,那么我如何确保每次玩家按下 X 键时,他都会将他的位置更改为 FixedUpdate() 中的另一个 GameObject 位置?
【问题讨论】: