unity 2d 人物移动代码
时间: 2023-08-31 09:39:18 浏览: 63
### 回答1:
好的,在 Unity 中实现 2D 人物移动的方法有很多,下面是一个基本的实现方式:
首先,你需要在场景中添加一个移动控制器(如 `Rigidbody2D` 或 `CharacterController2D`),并将人物的游戏对象作为其子对象。
然后,你可以使用 `Input.GetAxis("Horizontal")` 和 `Input.GetAxis("Vertical")` 来获取用户的水平和垂直输入,并使用这些输入来控制人物的移动。例如:
```
// 获取水平和垂直输入
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
// 计算移动向量
Vector2 moveDirection = new Vector2(horizontalInput, verticalInput);
// 给移动控制器发送移动消息
rigidbody2D.MovePosition(rigidbody2D.position + moveDirection * Time.deltaTime * speed);
```
在这里,`rigidbody2D` 是你在场景中添加的移动控制器,`speed` 是人物的移动速度,你可以根据需要调整这个值。
请注意,上面的代码仅是一个简单的示例,并不能直接使用。你可能还需要添加其他功能,如跳跃、攻击等。
### 回答2:
Unity 2D的人物移动代码主要使用的是Input类和Transform组件。下面是一个简单的示例代码:
```c#
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f; // 人物移动速度
private Rigidbody2D rigidbody;
private void Awake()
{
rigidbody = GetComponent<Rigidbody2D>();
}
private void Update()
{
float moveHorizontal = Input.GetAxis("Horizontal"); // 获取水平方向输入
float moveVertical = Input.GetAxis("Vertical"); // 获取垂直方向输入
Vector2 movement = new Vector2(moveHorizontal, moveVertical);
rigidbody.velocity = movement * speed; // 设置刚体速度
// 可选步骤:如果需要限制人物的移动范围,可以添加下面的代码
// float clampedX = Mathf.Clamp(transform.position.x, minX, maxX); // 限制人物在水平方向的移动范围
// float clampedY = Mathf.Clamp(transform.position.y, minY, maxY); // 限制人物在垂直方向的移动范围
// transform.position = new Vector3(clampedX, clampedY, transform.position.z);
}
}
```
这个代码示例将人物的移动速度设置为5,通过获取输入的水平和垂直值,构建一个Vector2类型的移动向量。然后将这个移动向量乘以移动速度,再赋给物体的刚体速度,实现了人物的移动。如果需要限制人物的移动范围,可以取消注释最后的限制代码,通过Mathf.Clamp函数限制人物在指定范围内移动。