创建一个可拾取道具 (Creating a Pickup)

可拾取道具(Pickups)是可以被玩家拾取、携带、查看、丢弃和放回的游戏物体。以下是创建一个“可拾取道具(Pickups)”步骤,按照这个步骤,你可以将“可拾取道具”类型的游戏物体,添加到你的游戏里的。


拾取 (Pickup)

  1. 弄一个3D对象到场景里。(例如:一杯奶茶的模型,或者一杯奶茶的游戏物体)

  2. 修改碰撞体的旋转、缩放、尺寸,让碰撞体适合这个3D对象,或者删掉碰撞体。

  3. 添加Rigibody组件。

  4. 如果你在第2步中删除了碰撞体,那么重新添加碰撞体(例如:Box Collider)。

  5. 确保碰撞体的旋转、缩放、尺寸与对象一致或适合对象。

  6. 运行场景,看看物理效果是否符合预期。如果碰撞体与对象不是那么匹配,你可以接着改。

  7. 将对象的Layer设置为FPEPickupObjects。

  8. 将FPEInteractablePickupScript脚本添加到对象(添加这个脚本的同时,也会自动添加一个AudioSource组件在对象上),然后我们就可以配置脚本中的选项了。

    • Interaction String (交互字符串) :当瞄准一个物体的时候,显示的文字。例如:“拿起奶茶”。
    • Put Back String (放回字符串) :当放回一个物体的时候,显示的文字。例如:“放回奶茶”。
    • Auto Generate Put Back Object (是否能放回原处?(自动放回)) :如果物品可以放回原处,那么这个选项设置为true。如果物品不能放回原处,或者需要放回到别的地方,那么这个选项设置为false。
    • Enable Sounds (启用声音) :可以指定一个声音文件。在拿起、放下这个可拾取道具时,会播放这个声音。
    • Rotation Type (旋转的类型) :在查看这个物体时,旋转的类型。旋转的类型有:360度旋转、不能旋转、水平旋转、垂直旋转。
    • Examination offsets (查看的偏移) :在查看这个物体的时候,进行的偏移。


  9. 如果,这个对象不需要放到别的地方,或者说只能放回原处,那么勾选“Auto Generate Put Back Object”选项。

    注意:如果导入的网格碰撞体(Mesh Collider)的几何方向,与Unity的坐标系的方向不同,那么有时把物品放回原处时,会表现得很奇怪。如果是这种情况,请调整网格碰撞体,或者换成Box Collider或其他的碰撞体。
    
  10. 根据需要设置旋转的类型(Rotation Type),查看的偏移(Examination offsets)等选项。 有时,对游戏进行测试,有助于判断形状奇特的物体的最佳值。

  11. 如果选中“Enable Sounds (启用声音)”的选项,请根据需要指定声音文件。如果未分配声音文件,将会使用通用的声音。这些通用的声音,适用于大多数的小物品。

  12. 运行场景,并与我们新创建的可拾取道具(Pickup)进行交互。

  13. 如果想要保存和加载新的可拾取道具,必须将这个可拾取道具,放在叫做“Resources”的文件夹下的“Pickups”文件夹中。如果你打算在游戏中,使用游戏的保存和加载这个可拾取道具,或者不用保存和加载的功能,那么你可以忽略这个步骤。


可以选择的优化:如果你知道你的可拾取道具永远不会使用到声音,那么你可以取消“Enable Sounds (启用声音)”的选项,并从游戏对象中删除AudioSource组件。我们通常不推荐你这样做,除非你正在制作的可拾取道具,是一个棉花糖(触碰上去没有声音) :)

注意:使用可拾取道具的功能,可以创建许多的内容。有关一些非常复杂和有趣的示例,请参阅叫做demoArtifactPickupObject的预制体(或在Demo场景中完成“find the artifact”)。你可以将可拾取道具类型的对象的“Pick up and Put Back Events(拾取和放回事件)”,连接到任何你希望的脚本或者其他对象上。


放回(手动放回) (Put Back (Manually Placed))

有时,你可能需要将游戏对象的放回位置,放在与它的初始位置不同的位置上(请参阅演示场景中的demoArtifactPickupObject 和demoCardboardBoxSpecial)。这也是复杂的游戏对象,或者模型比较小的游戏对象的最佳选择(参见演示场景中的demoPencil),因为它可以为播放器提供大目标,并且可以防止“pixel hunting (放回的地方,只有一个点的大小,太小了。所以很难选中这个点,因此很难放回物体)”的问题。

以下是创建手动放置的放回位置的步骤:

  1. 将一个空的游戏物体(empty Game Object),添加到场景中。
  2. 在这个空的游戏物体上,添加碰撞体(任何碰撞体都可以,推荐Box Collider)。
  3. 将FPEPutBackScript脚本,添加到这个空的游戏物体上。
  4. 在“Inspector”面板中,将我们需要的可拾取道具对象,分配到空的游戏物体上的“My Pickup Object(我的可拾取道具)”变量中。这样就可以,把空的游戏物体的位置,和可拾取道具对象相关联。这个空的游戏物体的位置,就是可拾取道具的放回位置。
  5. 运行场景,并测试我们刚刚做好的放回功能。如果你的可拾取道具在放回时,被奇怪地旋转,那么,请确保“放回”用的空游戏物体,与“My Pickup Object”变量中的可拾取道具,具有相同的旋转。(就是说,要让我们创建的空游戏物体,和可拾取道具的旋转,是一样的。)
注意:“需要放回的游戏物体”的Transform,将在可拾取道具被放回时,引导可拾取道具进行放回。因此,你可以做一些事情。例如,你可以旋转“需要放回的游戏物体”的Transform,这样当拾取可拾取道具时,它也会进行旋转。另外,建议Transform的位置,略高于其他任何物理游戏物体的位置,这样可以防止在物体被放回时,发生物理clipping和奇怪的反应。这不仅可以防止发生一些物理的问题,而且,还能很好地模拟物品从玩家手中落下的感觉。




FPEInteractablePickupScript脚本中的变量

变量名———————— 变量名的中文翻译———————— 说明
Interaction String 交互字符串 当瞄准一个物体的时候,显示的文字。例如:“拿起奶茶”。
Put Back String 放回字符串 当放回一个物体的时候,显示的文字。例如:“放回奶茶”。
Auto Generate Put Back Object 是否能放回原处?(自动放回) 如果物品可以放回原处,那么这个选项设置为true。如果物品不能放回原处,或者需要放回到别的地方,那么这个选项设置为false。
Enable Sounds 启用声音 可以指定一个声音文件。在拿起、放下这个可拾取道具时,会播放这个声音。
Rotation Type 旋转的类型 在查看这个物体时,旋转的类型。旋转的类型有:360度旋转、不能旋转、水平旋转、垂直旋转。
Examination offsets 查看的偏移 在查看这个物体的时候,进行的偏移。

results matching ""

    No results matching ""