📜  在统一 2d 中移动游戏对象 (1)

📅  最后修改于: 2023-12-03 14:51:33.127000             🧑  作者: Mango

在统一 2D 中移动游戏对象

在统一 2D(Unity 2D)中移动游戏对象是开发过程中的常见操作。本文将介绍如何在 Unity 2D 中移动游戏对象,包括移动方式和相关的代码实现。

移动方式
1. 使用 Transform.Translate

Transform.Translate 是一个快捷函数,可以在三维空间中移动游戏对象。在 Unity 2D 中,我们通常将游戏对象的 Z 轴设置为 0,使其位于屏幕上方。因此,我们可以使用以下代码在 X 和 Y 轴上移动游戏对象:

private Rigidbody2D rb2d;
private float speed = 5.0f;

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

void Update()
{
    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");
    
    Vector2 direction = new Vector2(horizontal, vertical);
    rb2d.transform.Translate(direction * speed * Time.deltaTime);
}

上述代码通过获取水平和垂直输入,计算出一个方向,并使用方向和速度来移动游戏对象。

2. 使用 Rigidbody2D.velocity

Rigidbody2D.velocity 是 Rigidbody2D 组件的一个属性,可以控制游戏对象的速度和方向。可以使用以下代码来移动游戏对象:

private Rigidbody2D rb2d;
private float speed = 5.0f;

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

void Update()
{
    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");
    
    Vector2 direction = new Vector2(horizontal, vertical);
    rb2d.velocity = direction * speed;
}

上述代码中,我们将方向乘以速度,然后将结果赋给 Rigidbody2D.velocity 属性,实现游戏对象的移动。

3. 使用 Rigidbody2D.AddForce

Rigidbody2D.AddForce 是 Rigidbody2D 组件的一个方法,可以在游戏对象上施加力。可以使用以下代码来移动游戏对象:

private Rigidbody2D rb2d;
private float speed = 5.0f;

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

void Update()
{
    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");
    
    Vector2 direction = new Vector2(horizontal, vertical);
    rb2d.AddForce(direction * speed);
}

上述代码中,我们将方向乘以速度,然后使用 Rigidbody2D.AddForce 方法添加一个施加力的向量,实现游戏对象的移动。

总结

以上便是在 Unity 2D 中移动游戏对象的几种方式,包括使用 Transform.Translate、Rigidbody2D.velocity 和 Rigidbody2D.AddForce。程序员可以根据实际情况选择合适的方法,来实现游戏对象的移动。