Unity2D开发入门-物体的运动和朝向

2023-07-26 14:25:29 浏览数 (1)

物体的运动

在Unity中,有多种方式可以让物体运动。

下面是一些常见的方式及示例:

改变位置

通过修改物体的位置: 你可以直接修改物体的Transform组件的位置属性来实现运动。

例如,通过修改物体的transform.position属性来让物体在场景中移动。

代码语言:javascript复制
using UnityEngine;

public class MoveObject : MonoBehaviour
{
    public float speed = 5f;

    // 更新物体的位置
    void Update()
    {
        // 获取当前位置
        Vector3 currentPosition = transform.position;

        // 计算新的位置
        currentPosition.x  = speed * Time.deltaTime;

        // 更新物体的位置
        transform.position = currentPosition;
    }
}

施加力

通过使用刚体组件: 刚体组件 Rigidbody 可以给物体施加力或应用力来实现运动。

例如,使用AddForce()方法来施加一个力使物体移动。

代码语言:javascript复制
using UnityEngine;

public class MoveObject : MonoBehaviour
{
    public float speed = 5f;
    private Rigidbody rb;

    void Start()
    {
        // 获取物体的刚体组件
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        // 在X轴方向施加一个力
        rb.AddForce(new Vector3(speed, 0f, 0f));
    }
}

使用动画

通过使用动画组件: 动画组件 Animator 可以用来创建复杂的物体动画,包括移动。例如,通过设置Animator组件中的参数来控制物体的动画。

代码语言:javascript复制
using UnityEngine;

public class MoveObject : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        // 获取物体的Animator组件
        animator = GetComponent<Animator>();
    }

    void Update()
    {
        // 根据参数值控制播放动画
        animator.SetFloat("Speed", 1f);
    }
}

以上是Unity中让物体运动的几种常见方式及其示例。

根据实际需求和场景,你可以选择合适的方式来实现物体的运动。

朝向

如下bullet是子弹 nestEmemy是敌人

我们想让子弹的朝向为敌人的方向

代码语言:javascript复制
Vector2 v = nestEmemy.transform.position - bullet.transform.position;
var angle = Mathf.Atan2(v.y, v.x) * Mathf.Rad2Deg;
var trailRotation = Quaternion.AngleAxis(angle, Vector3.forward);
bullet.transform.rotation = trailRotation;

敌人的位置减去子弹的位置能获取到子弹到敌人的向量。

Mathf.Atan2是Unity中的一个数学函数,用于计算给定y和x坐标之间的反正切(弧度值)。

它返回的是一个角度值,可以用来表示从x轴正向到从原点到指定点的射线之间的夹角。

Mathf.Atan2函数的原型如下:

代码语言:javascript复制
public static float Atan2(float y, float x);

参数y代表射线的y坐标,参数x代表射线的x坐标。

0 人点赞