我的游戏是自上而下的2D游戏,当玩家在移动中与另一个物体相撞时,玩家开始反弹。我试过使用弹力度为0的2D物理材质,但它不能解决问题。我想这和我的动作代码的方式有关。我试过使用Rigidbody.MovePosition,但它不起作用,我的播放器出现故障。这是我的移动代码。
float horizontal = Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime;
float vertical = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime;
transform.Translate(new Vector2(horizontal, vertical));
发布于 2020-05-24 21:00:00
尝试在FixedUpdate内部的Rigidbody上使用MovePosition方法,而不是更改玩家变换的位置。如果这还不能解决问题,请尝试将播放器刚体的碰撞检测模式更改为连续。
当在一体化中处理物理和刚体时,您可能希望在FixedUpdate方法中完成大多数与物理相关的事情。这个方法与Unity的物理循环同步运行,并且所有的物理计算都是在所有FixedUpdate方法被调用之后立即完成的。这允许看起来平滑的交互和物理。
https://stackoverflow.com/questions/61991878
复制