我如何获得一个符合其他游戏对象形状的游戏对象

时间:2018-10-15 17:19:48

标签: unity3d gameobject rigid-bodies

我试图在Unity中制作游戏,但我想让gameObject掉下来并使其下方的地面形状与之匹配。

游戏开始时:

How the game starts

做什么:

enter image description here

我希望它做什么

enter image description here

我非常体面,因此即使是正确方向的提示也会有所帮助。 谢谢。

1 个答案:

答案 0 :(得分:0)

一种方法是复制地面物体,并用该复制品的ta修改版本替换掉落的物体。如何做到这一点,就是在坠落物体与给定的地面物体之间输入碰撞时执行以下操作:

  1. 确保该下落的物体尚未与该地面物体碰撞,例如与fallingObject.lastCopiedGroundObject GameObject碰撞。
  2. 找到y的{​​{1}}中的groundObject
  3. Collider.bounds.size中的y添加到新的groundObject.transform.position
  4. 使用Vector3 newPos
  5. 在适当的情况下,将GameObject newFalling = Object.Instantiate(groundObject, newPos, groundObject.rotation, fallingObject.parent)rotationalVelocity从FallingObject的刚体复制到velocity的刚体。
  6. 根据需要在newFalling上添加,删除,修改组件(例如替换纹理),以使其进一步起作用并正确显示为要替换的下落物体。
  7. newFalling摧毁掉落的旧物体
  8. 设置fallingObject.Destroy()中的lastCopiedGroundObject,以使newFalling不会再次与相同的newFalling进行此交互,直到完成另一个副本为止。

这会将下落的物体放置在地面物体上方,并使用物理引擎使其下落,以确定其应该放在顶部的位置。

一个考虑因素是改为使用groundObject并将新碰撞的地面对象附加到旧坠落对象的列表中,以便如果坠落对象接触多个地面,则只会将其形状更改为每个形状仅一次,因此它不会在某些条件下永久在形状之间振荡。