首页 > 其他分享 >【Unity】Vector3的方法

【Unity】Vector3的方法

时间:2024-06-05 13:47:16浏览次数:21  
标签:Lerp Vector3 Unity normalized 归一化 方法 向量

属性和方法 作用
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. 在物理中计算力矩和角动量:叉积常用于计算力对物体的转动效果。

标签:Lerp,Vector3,Unity,normalized,归一化,方法,向量
From: https://www.cnblogs.com/NiuFacai/p/18232795

相关文章

  • js一般私有的方法如何命名
    在JavaScript中,对于私有方法的命名,尽管语言本身并不强制任何命名规范,但有一些广泛接受的约定来表明方法或属性的私有性。这些约定主要是为了提高代码的可读性和维护性,让其他开发者能够快速识别出哪些方法或属性是设计为内部使用的。以下是几种常见的私有方法命名约定:下划线前......
  • DataFrame数据的处理多种方法
    在Python中,DataFrame是pandas库中的一个核心数据结构,用于存储和操作二维的、大小可变且可以包含异质类型列的表格型数据。处理DataFrame数据时,你可以执行各种操作,包括数据清洗、转换、聚合、排序、筛选等。以下是一些常见的DataFrame数据处理方法:1.读取数据使用pandas的r......
  • 【Unity美术】spine软件的使用—2D动画的制作
    ......
  • 面向对象设计方法Review-01.课程概述
    课程简介能带来什么:1.掌握OOP基本原理;2.了解OOP新兴技术;3.满足OOP技术需求;课程目标:1.OOPL写代码→OOP→OOSC;2.朴素OOP→系统化OOP;3.传统OO技术→现代化OO技术;课程内容:OO的起源及动机;OO的设计:1.契约式设计;2.设计原则;3.设计模式;4.应用框架;背景概述软......
  • word怎么改成图片?四个专业的方法,批量把word转为图片
    传统的Word文档在分享时可能受到格式、字体、排版等多种因素的限制,导致接收方无法完全还原原文档的样式。而通过将Word文档转换为图片格式,可以确保文档内容的完整性和一致性,使接收方能够准确理解文档内容。此外,图片格式的文件更容易在社交媒体、论坛、博客等平台上进行分享和传......
  • 如何一键提取文件夹下所有文件名?亲测好用的四个方法
    在数字化时代,文件管理和整理成为我们日常工作中不可或缺的一部分。尤其是在处理大量文件时,如何快速有效地提取文件夹下所有文件的名称,成为提高工作效率的关键。本文将详细介绍如何一键提取文件夹下所有文件名,帮助读者轻松应对文件整理的需求。如何一键提取文件夹下所有文件名?......
  • 人魅延迟高/无法联机的解决方法 人魅联机失败、联机有延迟怎么办
    人魅作为一款多人联机的恐怖解谜游戏,不仅具有极高的游戏性和趣味性,还能够锻炼玩家的观察力和团队合作能力。四个玩家需要扮演自己的角色,在小镇里探索解密,只有齐心协力,才能成功破解谜题,揭开真相。这一点来说,或许有点像剧本杀。不过,目前人魅在steam上面的评价并不是很好,大多数玩......
  • jq 关于ajax的各项参数——及请求方法(持续更新)
    Ajax(一般配合jq,一起使用):type:请求类型:'GET','POST',...dataType:请求方式:"json"...contentType:请求头:'application/json;charse=UTF-8'...(注:不传请求头默认是UTF-8,格式为:FormData,现在请求格式为:RequestPayload)url:请求地址:"/order/update",......
  • android view 扩展方法
    importandroid.view.Viewimportandroid.view.ViewGroupimportandroid.view.ViewGroup.MarginLayoutParamsimportandroid.view.ViewTreeObserverimportandroidx.core.view.marginBottomimportandroidx.core.view.marginLeftimportandroidx.core.view.marginRight......
  • printf() 格式字符串的使用方法
    printf()是C语言中一个非常重要的函数,它的核心功能是打印格式化的字符串。而其中的关键则是第一个参数——格式字符串(formatstring)。虽然大多数人都会使用格式字符串,但一些细节可能未必了解。本文将详细说明格式字符串的使用方法。格式字符串(formatstring)格式字符串是......