繁体   English   中英

Unity基本功能说明

[英]Unity Basic Functions Explanation

如标题中所述,如果可能的话,我希望有人向我解释一些基本知识。

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) float speed = 50.00f; Rigibody.AddForce(Vector3(50, 50, 50) * speed) ;

一,概念:

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

因此,具有变形但没有刚体的对象将不受重力,碰撞或力的影响

您实际上可以通过根据时间更改平移的位置来在没有刚体的情况下“模拟”物理,但是它不会与物理系统的其余部分正确交互(这是您的2种实现之间的主要区别,两者不同,但是可能看起来相似)

然后,两者以相同的方式工作,您传递了一个Vector,该Vector表示每个轴的力/距离:

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单位的初始力(将对其加速),也就是说,对象将具有50轴x轴,40轴y轴和30轴z轴的力,使得它向各个方向加速

将向量乘以标量将返回Vector3,其中所有分量都将相乘,因此Vector3(50,40,30)*2将返回与Vector3(100,80,60)相同的Vector3(100,80,60) ,从而使对象向相同方向加速但具有“速度”的两倍

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM