Unity 2D俯视游戏移动代码
时间: 2024-10-09 19:03:36 浏览: 40
Unity3D开发的斜45度射击游戏 源代码
5星 · 资源好评率100%
在Unity 2D中编写俯视视角下的游戏主角移动代码,可以参考以下示例。假设主角是一个名为`Player`的游戏对象,拥有`Rigidbody2D`组件,我们可以使用其`velocity`属性来控制移动。
```csharp
using UnityEngine;
public class TopDownPlayerMovement : MonoBehaviour
{
[SerializeField] private float movementSpeed = 5f;
[SerializeField] private LayerMask walkableLayers;
private Rigidbody2D rb;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
// 只有当角色在可行走的层上才移动
if ((rb.velocity.x == 0 && Mathf.Abs(horizontalInput) > 0.1f) || (rb.velocity.y == 0 && Mathf.Abs(verticalInput) > 0.1f))
{
Vector3 movement = new Vector3(horizontalInput, 0, verticalInput); // 俯视视角不需要y轴的移动
movement *= movementSpeed;
// 将运动矢量限制在可行走区域
RaycastHit2D hitInfo;
if (Physics2D.Raycast(transform.position, -movement, out hitInfo, Mathf.Infinity, walkableLayers))
{
transform.position += hitInfo.normal * hitInfo.distance;
}
else
{
rb.velocity = Vector2.zero; // 如果没有命中任何可走表面,则停止
}
}
}
}
```
在这个例子中,我们检查了玩家是否处于可行走的图层,如果不在则停止移动。使用`Physics2D.Raycast`来检测当前位置是否有可行走的方向,并根据碰撞信息调整位置。
阅读全文