当前位置:   article > 正文

Unity键盘左右键(AD键)控制2D角色的左右朝向/翻转_unity2d角色方向控制

unity2d角色方向控制

        第一种方法是利用Input.GetAxis("Horizontal")的值得范围。Input.GetAxis("Horizontal")的范围是[-1,1]。

Input.GetAxis("Horizontal")的值大于0时,向右转;Input.GetAxis("Horizontal")小于0时,向左转

将该脚本挂在要控制的角色身上

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PlayerControl : MonoBehaviour
  5. {
  6. Vector3 flipScale = new Vector3(-1, 1, 1); //翻转后的轴的值为负
  7. private void FixedUpdate()
  8. {
  9. Direction();
  10. }
  11. public void Direction()
  12. {
  13. float turnX = Input.GetAxis("Horizontal");
  14. if (turnX > 0)
  15. transform.localScale = flipScale;
  16. else if (turnX < 0)
  17. transform.localScale = Vector3.one; //Vector3.one即Vector3(1,1,1)
  18. }
  19. void Update()
  20. {
  21. }
  22. }

注意:使用此方法时要保证放在unity中的角色的scale没有改变,若放大或缩小后, transform.localScale = Vector3.one;会让该角色的大小变回初始大小。

第二种方法,利用Input.GetAxisRaw("Horizontal")的取值为{1,0,-1}

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PlayerControl : MonoBehaviour
  5. {
  6. private void FixedUpdate()
  7. {
  8. Direction();
  9. }
  10. public void Direction()
  11. {
  12. float turnX = Input.GetAxisGetAxisRaw("Horizontal"); //取值为 -1,0,1,值的正负决定方向
  13. if (turnX != 0)
  14. transform.localScale = Vector3(turnX,1,1);
  15. }
  16. void Update()
  17. {
  18. }
  19. }

第三种方法:利用人物自带组件SpriteRenderer下的flip;

SpriteRenderer.fjilipX=true,即翻转,SpriteRenderer.fjilipX=false不翻转;

  1. private SpriteRenderer sr;
  2. void Start()
  3. {
  4. sr = GetComponent<SpriteRenderer>();
  5. }
  6. public void FixedUpdate()
  7. {
  8. Move(); //移动函数
  9. }
  10. public void Move()
  11. {
  12. if (Input.GetAxis("Horizontal")> 0)
  13. sr.flipX = false;
  14. if (Input.GetAxis("Horizontal") < 0)
  15. sr.flipX = true;
  16. }
  17. }

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

闽ICP备14008679号