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

博客介绍了在Unity游戏引擎中实现角色转向控制的三种方法。一是利用Input.GetAxis(\Horizontal\)的值范围控制转向,使用时要注意角色scale;二是利用Input.GetAxisRaw(\Horizontal\)取值;三是利用人物自带组件SpriteRenderer下的flip控制翻转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

Unity 2D中,你可以通过以下几种方式来实现人物翻转: 1. 使用Sprite Renderer组件:可以通过控制Sprite Renderer组件的flipX属性来实现人物的翻转。将flipX设置为true可以水平翻转人物,设置为false则恢复正常状态。 ```csharp using UnityEngine; public class CharacterController : MonoBehaviour { private SpriteRenderer spriteRenderer; private void Start() { spriteRenderer = GetComponent<SpriteRenderer>(); } private void Update() { // 根据输入控制人物的移动和翻转 float moveX = Input.GetAxis("Horizontal"); // 控制人物移动 transform.Translate(new Vector2(moveX * speed * Time.deltaTime, 0)); // 控制人物翻转 if (moveX < 0) { spriteRenderer.flipX = true; } else if (moveX > 0) { spriteRenderer.flipX = false; } } } ``` 2. 使用Transform的局部缩放:你可以通过修改人物的局部缩放来实现翻转效果。将局部缩放的x轴值设置为-1可以水平翻转人物,设置为1则恢复正常状态。 ```csharp using UnityEngine; public class CharacterController : MonoBehaviour { private void Update() { // 根据输入控制人物的移动和翻转 float moveX = Input.GetAxis("Horizontal"); // 控制人物移动 transform.Translate(new Vector2(moveX * speed * Time.deltaTime, 0)); // 控制人物翻转 if (moveX < 0) { transform.localScale = new Vector3(-1, 1, 1); } else if (moveX > 0) { transform.localScale = new Vector3(1, 1, 1); } } } ``` 这些是常见的实现人物翻转的方法,在具体的项目中,你可以根据需要选择适合的方式来实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值