赞
踩
第一种方法是利用Input.GetAxis("Horizontal")的值得范围。Input.GetAxis("Horizontal")的范围是[-1,1]。
Input.GetAxis("Horizontal")的值大于0时,向右转;Input.GetAxis("Horizontal")小于0时,向左转
将该脚本挂在要控制的角色身上
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
-
- public class PlayerControl : MonoBehaviour
- {
- Vector3 flipScale = new Vector3(-1, 1, 1); //翻转后的轴的值为负
- private void FixedUpdate()
- {
- Direction();
- }
- public void Direction()
- {
- float turnX = Input.GetAxis("Horizontal");
- if (turnX > 0)
- transform.localScale = flipScale;
- else if (turnX < 0)
- transform.localScale = Vector3.one; //Vector3.one即Vector3(1,1,1)
- }
- void Update()
- {
-
- }
- }
注意:使用此方法时要保证放在unity中的角色的scale没有改变,若放大或缩小后, transform.localScale = Vector3.one;会让该角色的大小变回初始大小。
第二种方法,利用, Input.GetAxisRaw("Horizontal")的取值为{1,0,-1}
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
-
- public class PlayerControl : MonoBehaviour
- {
- private void FixedUpdate()
- {
- Direction();
- }
- public void Direction()
- {
- float turnX = Input.GetAxisGetAxisRaw("Horizontal"); //取值为 -1,0,1,值的正负决定方向
- if (turnX != 0)
- transform.localScale = Vector3(turnX,1,1);
- }
- void Update()
- {
-
- }
- }
第三种方法:利用人物自带组件SpriteRenderer下的flip;
SpriteRenderer.fjilipX=true,即翻转,SpriteRenderer.fjilipX=false不翻转;
-
- private SpriteRenderer sr;
-
- void Start()
- {
- sr = GetComponent<SpriteRenderer>();
- }
- public void FixedUpdate()
- {
- Move(); //移动函数
- }
- public void Move()
- {
- if (Input.GetAxis("Horizontal")> 0)
- sr.flipX = false;
- if (Input.GetAxis("Horizontal") < 0)
- sr.flipX = true;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。