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

最佳答案

差异很大。实际上,它们没什么不同,但是如果您是第一次使用枪支来了解它们,我会感到困惑。

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

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



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

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

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

10-08 08:01