Raycast和Instantiate之间的区别

时间:2018-11-04 18:53:52

标签: c# unity3d game-development

我正在阅读一些教程,遇到了Raycast,一个教程使用Instantiate射击,而另一个教程使用Raycast。我已经编程了一段时间,但仍不确定应该使用Raycast还是后者。谁能解释我的工作原理。

1 个答案:

答案 0 :(得分:4)

差异很大。实际上,它们之间没有什么不同,但是如果您是第一次从射击中了解到它们,我会感到困惑。

射线广播:想象一下激光。您选择该激光的起点和方向,然后返回激光击中的位置。

实例化:您根本无法将它与射线投射进行比较。 Unity使用称为GameObjects的东西。玩家是一个游戏对象,相机是一个游戏对象,地形是一个游戏对象。 Instantiate()只需创建一个新的GameObject。


使用Raycast()开枪非常简单;起点是枪的位置,给它一个方向,然后您就可以知道枪的位置。使用Instantiate()开枪意味着要创建一个带有RigidBody和Collider的游戏对象“子弹”。它会占用更多的性能,但是您可以添加子弹落,风,弹跳之类的东西。虽然,您可能仍需要使用Raycast()来确保它在物理更新之间不会经历任何事情,因为它的移动速度可能非常快。

下次,您应该使用Unity Manual来回答这样的问题。

"Unity Instantiate""Unity Raycast"在Google中出现的第一件事。