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