📅  最后修改于: 2023-12-03 15:38:27.919000             🧑  作者: Mango
如果你正在制作一个 2D 游戏,你可能会需要控制游戏中的角色移动。在 Unity 中,你可以使用 C# 脚本轻松地实现这一点。
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);
}
}
为角色添加一个 Rigidbody2D 组件以启用物理引擎,这样角色才能被移动。
使用 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 游戏并实现角色移动了!