当前位置:   article > 正文

Unity移动物体碰撞后自动转身移动_unity 一块挡板碰到两边的物体会来回移动

unity 一块挡板碰到两边的物体会来回移动

a1d427f9a6e84afebde13a2ae564132d.png

05709ca56f3f459bb0d2de62ffe0035e.png

 代码部分:

  1. using UnityEngine;
  2. public class enemy_1 : MonoBehaviour
  3. {
  4. Rigidbody2D rig;
  5. int dir = 1;
  6. Transform front;
  7. void Start()
  8. {
  9. rig = GetComponent<Rigidbody2D>();
  10. front = transform.Find("front");
  11. }
  12. private void FixedUpdate()//刚体运动放在FixUpdate里
  13. {
  14. //定义每秒几米的速度
  15. rig.velocity = new Vector2(5 * dir, GetComponent<Rigidbody2D>().velocity.y);
  16. //方法一:通过Tag
  17. Collider2D hit = Physics2D.OverlapPoint(front.position);
  18. if (hit != null)
  19. {
  20. if (hit.tag == "Wall")
  21. {
  22. Flip();
  23. }
  24. }
  25. //方法二:通过定义碰撞物体的层来实现转身
  26. //在第六层里碰撞物体tag=Wall时转身
  27. //Collider2D[] hits = Physics2D.OverlapPointAll(front.position, 1<<6);
  28. //foreach(var item in hits)
  29. //{
  30. // if (item.tag == "Wall")
  31. // {
  32. // Flip();
  33. // break;
  34. // }
  35. //}
  36. }
  37. void Flip()
  38. {
  39. //利用localScale镜像
  40. Vector2 v = transform.localScale;
  41. v.x *= -1;
  42. transform.localScale = v;
  43. dir *= -1;
  44. }
  45. void Update()
  46. {
  47. }
  48. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/89495
推荐阅读
相关标签
  

闽ICP备14008679号