Raycast 和 Instantiate 的区别

The difference between Raycast and Instantiate

我浏览了一些教程并遇到了 Raycast,其中一个使用 Instantiate 开枪,另一个使用 Raycast。我已经编程了一段时间,但我仍然不确定我应该使用 Raycast 还是后者。任何人都可以向我解释它是如何工作的。

差别很大。实际上,它们完全不同,但如果您第一次了解它们是从开枪的使用,我可以看出您的困惑。

Raycast: 想象一下激光。您选择激光的起点和方向,然后 returns 激光击中的位置。

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


使用Raycast()开枪非常简单;起点是枪的位置,给它方向,然后你就得到枪击中的地方。使用 Instantiate() 开枪意味着创建一个名为 "bullet" 的游戏对象,其中包含一个 RigidBody 和一个 Collider。它会更注重性能,但您可以添加诸如子弹掉落、风、跳弹之类的东西。虽然,您可能仍然需要使用 Raycast() 来确保它不会在物理更新之间经历任何事情,因为它可能移动得非常快。

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

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