📜  如何在 unity 2020 中移动二维字符 - C# (1)

📅  最后修改于: 2023-12-03 15:38:27.919000             🧑  作者: Mango

如何在 Unity 2020 中移动二维字符 - C#

如果你正在制作一个 2D 游戏,你可能会需要控制游戏中的角色移动。在 Unity 中,你可以使用 C# 脚本轻松地实现这一点。

步骤
  1. 创建一个角色游戏对象,并添加一个 SpriteRenderer 组件以显示角色的二维图像。
using UnityEngine;

public class CharacterController : MonoBehaviour
{
    private Rigidbody2D rigidbody2d;
    private Animator animator;
    private SpriteRenderer spriteRenderer;
    private Vector2 movement;

    [SerializeField] private float speed = 5f;

    void Awake()
    {
        rigidbody2d = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        spriteRenderer = GetComponent<SpriteRenderer>();
    }

    void Update()
    {
        movement.x = Input.GetAxisRaw("Horizontal");
        movement.y = Input.GetAxisRaw("Vertical");

        animator.SetFloat("Horizontal", movement.x);
        animator.SetFloat("Vertical", movement.y);
        animator.SetFloat("Speed", movement.sqrMagnitude);

        spriteRenderer.flipX = movement.x < 0;
    }

    void FixedUpdate()
    {
        rigidbody2d.MovePosition(rigidbody2d.position + movement * speed * Time.fixedDeltaTime);
    }
}
  1. 为角色添加一个 Rigidbody2D 组件以启用物理引擎,这样角色才能被移动。

  2. 使用 C# 脚本控制角色移动。在脚本中,你应该访问角色的 Rigidbody2D 组件,并在每一帧中更新其位置。以下是一个示例脚本,它允许玩家使用方向键或 WASD 键控制角色的移动:

void FixedUpdate()
{
    rigidbody2d.MovePosition(rigidbody2d.position + movement * speed * Time.fixedDeltaTime);
}

Update() 方法中,你应该检测玩家的输入并更新角色的动画。以下是一个示例代码片段:

movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");

animator.SetFloat("Horizontal", movement.x);
animator.SetFloat("Vertical", movement.y);

spriteRenderer.flipX = movement.x < 0;

在这个代码片段中,我们检测水平和垂直输入,并将其赋值给一个名为 movement 的向量。之后,我们使用 SetFloat() 方法更新角色的动画状态。

最后,我们使用 flipX 属性水平翻转角色的 SpriteRenderer,这样角色在向左移动时就会面对左边,而不是右边。

总结

在 Unity 中实现角色移动和动画并不是一件难事,只需简单的 C# 代码即可完成。通过本文,你已经学会了如何使用 Rigidbody2D 组件和脚本来移动角色,并如何创建动画状态机控制角色动画。现在,你可以制作自己的 2D 游戏并实现角色移动了!