第一种方法是利用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;文章来源:https://www.toymoban.com/news/detail-778367.html
SpriteRenderer.fjilipX=true,即翻转,SpriteRenderer.fjilipX=false不翻转;文章来源地址https://www.toymoban.com/news/detail-778367.html
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;
}
}
到了这里,关于Unity键盘左右键(AD键)控制2D角色的左右朝向/翻转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!