首页 > 解决方案 > Raycast 和 Instantiate 的区别

问题描述

我正在阅读一些教程并遇到了 Raycast,其中一个使用 Instantiate 来开枪,另一个使用 Raycast。我已经编程了一段时间,但我仍然不确定我应该使用 Raycast 还是后者。谁能解释一下它是如何工作的。

标签: c#unity3dgame-development

解决方案


相当大的不同。实际上,它们的区别不能再大了,但是如果您第一次了解它们是从使用开枪中了解它们,我会看到混乱。

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

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


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

下一次,你应该使用Unity 手册来解决这样的问题。

在 Google 中出现的第一件事是“Unity Instantiate”“Unity Raycast”


推荐阅读