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

        第一种方法是利用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;
    }
}

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值