我正在阅读一些教程,遇到了Raycast,一个教程使用Instantiate射击,而另一个教程使用Raycast。我已经编程了一段时间,但仍不确定应该使用Raycast还是后者。谁能解释我的工作原理。
答案 0 :(得分:4)
差异很大。实际上,它们之间没有什么不同,但是如果您是第一次从射击中了解到它们,我会感到困惑。
射线广播:想象一下激光。您选择该激光的起点和方向,然后返回激光击中的位置。
实例化:您根本无法将它与射线投射进行比较。 Unity使用称为GameObjects的东西。玩家是一个游戏对象,相机是一个游戏对象,地形是一个游戏对象。 Instantiate()
只需创建一个新的GameObject。
使用Raycast()
开枪非常简单;起点是枪的位置,给它一个方向,然后您就可以知道枪的位置。使用Instantiate()
开枪意味着要创建一个带有RigidBody和Collider的游戏对象“子弹”。它会占用更多的性能,但是您可以添加子弹落,风,弹跳之类的东西。虽然,您可能仍需要使用Raycast()
来确保它在物理更新之间不会经历任何事情,因为它的移动速度可能非常快。
下次,您应该使用Unity Manual来回答这样的问题。
"Unity Instantiate"和"Unity Raycast"在Google中出现的第一件事。