【Unity】Vector3的方法

属性和方法 作用
normalized 使用Vector3.normalized的一个常见场景是在物理模拟中,比如计算速度向量或在射线投射(Raycasting)中确定射线的方向。
Lerp Vector3.Lerp在Unity中非常常用,尤其是在动画和游戏逻辑中,用于平滑地过渡从一个状态到另一个状态,例如角色移动、颜色渐变、摄像机平滑跟踪等。
Dot Vector3.Dot在Unity中非常有用,尤其是在需要进行向量运算的场景中,如物理计算、动画和游戏逻辑等。
Cross Vector3.Cross在Unity中非常有用,尤其是在需要进行空间向量运算的场景中,如3D图形渲染、物理引擎中的旋转和力矩计算等。

normalized 归一化##

Kimi:
Unity中的Vector3是一个表示三维空间中点或向量的类,它具有三个分量:x、y和z。Vector3.normalized是一个属性,当对一个Vector3实例调用这个属性时,会返回一个新的Vector3对象,它是原始向量的归一化版本。

归一化向量是指一个向量的长度(或大小)被缩放到1的向量,同时保持原有的方向。在数学上,一个向量v的归一化版本可以通过下面的公式计算得到:

其中,

是向量v的长度,计算公式为:

在Unity中,Vector3.normalized属性会自动进行这些计算,并返回一个新的Vector3对象,其长度为1,方向与原始向量相同。如果原始向量的长度为0,则normalized属性会抛出一个异常,因为无法对零向量进行归一化。

使用Vector3.normalized的一个常见场景是在物理模拟中,比如计算速度向量或在射线投射(Raycasting)中确定射线的方向。

下面是一个Unity中使用Vector3.normalized的示例代码:

using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        Vector3 originalVector = new Vector3(3, 4, 0);
        Vector3 normalizedVector = originalVector.normalized;

        Debug.Log("Original Vector: " + originalVector);
        Debug.Log("Normalized Vector: " + normalizedVector);
    }
}

在这个示例中,我们创建了一个原始向量originalVector,然后通过调用normalized属性获取了它的归一化版本normalizedVector,并在控制台中打印了这两个向量。

Lerp

在Unity中,Vector3.Lerp(线性插值)是一个用于在两个向量之间进行插值的静态方法。它根据一个给定的参数t,在两个三维向量a和b之间计算出一个中间向量。t的值通常在0到1之间,其中0表示向量a,1表示向量b,而中间值则表示这两个向量之间的某个点。

函数的原型如下:

public static Vector3 Lerp(Vector3 a, Vector3 b, float t)

a:起始向量。
b:结束向量。
t:插值参数,用于确定插值点的位置。
线性插值的计算公式是:

这里的result是插值后的向量。

使用Vector3.Lerp的一个示例代码如下:


using UnityEngine;

public class ExampleScript : MonoBehaviour
{
    void Start()
    {
        Vector3 startVector = new Vector3(1, 0, 0); // 红色向量
        Vector3 endVector = new Vector3(0, 1, 0);   // 绿色向量
        float interpolationValue = 0.5f;            // 插值参数,0到1之间

        Vector3 interpolatedVector = Vector3.Lerp(startVector, endVector, interpolationValue);
        Debug.Log("Interpolated Vector: " + interpolatedVector);
    }
}

在这个示例中,我们定义了两个向量startVector和endVector,分别代表红色和绿色。我们设置插值参数interpolationValue为0.5,这意味着我们想要在两个向量之间找到一个中间点。使用Vector3.Lerp函数,我们计算出了插值后的向量interpolatedVector,并在控制台中打印出来。

Vector3.Lerp在Unity中非常常用,尤其是在动画和游戏逻辑中,用于平滑地过渡从一个状态到另一个状态,例如角色移动、颜色渐变、摄像机平滑跟踪等。

Dot 点乘

叉乘

叉积有几个重要的用途:

  1. 计算两个向量的垂直向量:叉积结果向量与原两向量都垂直。
  2. 计算面积:叉积向量的模长等于由原两向量构成的平行四边形的面积。
  3. 在物理中计算力矩和角动量:叉积常用于计算力对物体的转动效果。
posted @   NiuFacai  阅读(240)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示