Unity基本功能说明

本文关键字:说明 功能 Unity | 更新日期: 2023-09-27 17:49:24

正如标题中提到的,如果可能的话,我希望有人能向我解释一些基本的事情。

1( Rigibody.AddForce(Vector3(50, 50, 50) * speed)

当你给一个物体坐标时,它为什么会移动?如果你把它相乘,它会更快吗?我想这对来说是一样的

transform.Translate(-speed * Time.deltaTime * Input.GetAxis("Horizontal"), 0, 0);

整个要点是:我通过坐标,它会随着计算值向右移动

(坐标*速度*Something_Else(。为什么??

如果有任何答案,我将不胜感激。

更新1:如果我将Vector3乘以某个浮点数,它也将返回Vector3,但对象的速度会增加。我不明白为什么。坐标只是坐标。为什么一个物体在"更大"的坐标下移动得更快?

float speed = 50.00f; Rigibody.AddForce(Vector3(50, 50, 50) * speed)

Unity基本功能说明

首先,概念:

  1. 变换:场景中的每个对象都有一个变换,表示位置、旋转和缩放
  2. 刚体:统一物理的一部分,代表物理应用的对象

因此,一个有变换但没有刚体的物体不会受到重力、碰撞或力的影响

实际上,你可以通过根据时间改变平移的位置来"模拟"没有刚体的物理,但它不会与物理系统的其他部分正确交互(这是你的两个实现之间的主要区别,它们不相同,但看起来可能相似(

然后,两者以相同的方式工作,通过一个矢量,该矢量表示每个轴上的力/距离:

myRigibody.AddForce(Vector3(2,0,0)); //Force of 2 applied in x axys
myTransform.Translate(Vector3(2,0,0)); //translate 2 position in x axys

因此,通常情况下,您使用归一化向量(模等于1(,并将其乘以您的速度(或技术上的力(:

//first vector is direction (x axys) and multiply by speed (2)
myRigibody.AddForce(Vector3(1,0,0)*2); 

把矢量不仅看作空间中的坐标,还看作这个方向上的方向或距离。

更新的答案
在给定的例子中,当谈到力时,我们有Vector3(50,50,50(,它表示每个轴中的力:

Rigidbody.AddForce(Vector3(50, 40, 30));

这种方法将在每个轴上对物体施加50个单位的初始力(使其加速(,也就是说,物体在x轴上的力为50,在y轴上为40,在z轴上为30,使其在的所有方向上加速

将一个矢量乘以一个escalar将返回一个Vector3,其中所有分量都将是多个分量,因此Vector3(50,40,30)*2将返回与Vector3(100,80,60)相同的值,使对象在相同方向上加速,但速度是的两倍

你在这里的主要问题不是编程,而是一些基本的数学/物理理解,以及向量是如何使用的,正如我之前所说,向量与坐标不同,简而言之,坐标表示空间中的一个点,而向量表示方向和"距离",因此,使用[1,0]作为坐标,将表示距离原点正x轴上的1米,而作为一个向量,它表示从[0,0]到[1,0,0]的距离和方向。