当前位置:   article > 正文

【Unity】角色朝墙体移动时持续碰撞,从而导致角色不断震动,如何解决?本文提供一个思路_unity角色碰到墙壁动画出错

unity角色碰到墙壁动画出错

解决问题的关键是,使角色在与墙体发生碰撞后,不能再往碰撞方向移动,所以有必要记录角色碰撞时的朝向,同时也要记录“碰撞”的状态。

我这里是2D环境,用了Transform.translate()作为角色控制。其他移动方式如AddForce()、Rigidbody.velocity也可以。

贴一下代码,代码间有注释。

  1. using UnityEngine;
  2. public class PlayerController : MonoBehaviour
  3. {
  4. public float xspeed = 5.0f;
  5. public float yspeed = 5.0f;
  6. private float xmove;
  7. private float ymove;
  8. private bool coll = false; // 是否发生碰撞,解决碰撞震动问题
  9. private char faceDirection = 'f'; // 正面是f,背面是b,左面是l,右面是r
  10. private char pre_face; // 碰撞时的朝向
  11. private void Update()
  12. {
  13. xmove = Input.GetAxis("Horizontal") * xspeed * Time.deltaTime;
  14. ymove = Input.GetAxis("Vertical") * yspeed * Time.deltaTime;
  15. if (xmove > 0) faceDirection = 'r';
  16. if (xmove < 0) faceDirection = 'l';
  17. if
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/89508
推荐阅读
相关标签
  

闽ICP备14008679号