在 Unity 中,可以使用以下代码来实现 2D 人物根据方向控制转向:

using UnityEngine;

public class CharacterController2D : MonoBehaviour
{
    public float moveSpeed = 5f; // 移动速度

    private Rigidbody2D rb;

    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        float moveX = Input.GetAxis("Horizontal"); // 获取水平输入值

        // 根据输入值设置人物的速度和朝向
        if (Mathf.Abs(moveX) > 0.01f)
        {
            rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);
            transform.localScale = new Vector3(Mathf.Sign(moveX), 1f, 1f);
        }
        else
        {
            rb.velocity = new Vector2(0f, rb.velocity.y);
        }
    }
}

在上面的代码中,我们首先获取水平输入值'moveX',然后根据'moveX'的值来设置人物的速度和朝向。

如果'moveX'的绝对值大于0.01f,说明有水平输入,我们就根据输入值设置人物的速度和朝向。将人物的速度设置为'moveX * moveSpeed',其中'moveSpeed'是移动速度。然后根据'moveX'的正负来设置人物的朝向,使用'Mathf.Sign(moveX)'获取'moveX'的符号,然后将人物的'transform.localScale.x'设置为这个符号值。这样,当'moveX'为正数时,人物朝右,当'moveX'为负数时,人物朝左。

如果'moveX'的绝对值小于等于0.01f,说明没有水平输入,我们将人物的水平速度设置为0,保持人物停止状态。

将上述代码添加到 2D 人物的控制脚本中,然后将该脚本挂载到 2D 人物的游戏对象上,即可实现人物根据方向控制转向。

Unity 2D 人物方向控制转向代码示例

原文地址: https://www.cveoy.top/t/topic/lK58 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录