答案 0 :(得分:0)
一种方法是复制地面物体,并用该复制品的ta修改版本替换掉落的物体。如何做到这一点,就是在坠落物体与给定的地面物体之间输入碰撞时执行以下操作:
fallingObject.lastCopiedGroundObject
GameObject
碰撞。y
的{{1}}中的groundObject
Collider.bounds.size
中的y
添加到新的groundObject.transform.position
Vector3 newPos
。GameObject newFalling = Object.Instantiate(groundObject, newPos, groundObject.rotation, fallingObject.parent)
和rotationalVelocity
从FallingObject的刚体复制到velocity
的刚体。newFalling
上添加,删除,修改组件(例如替换纹理),以使其进一步起作用并正确显示为要替换的下落物体。newFalling
摧毁掉落的旧物体fallingObject.Destroy()
中的lastCopiedGroundObject
,以使newFalling
不会再次与相同的newFalling
进行此交互,直到完成另一个副本为止。这会将下落的物体放置在地面物体上方,并使用物理引擎使其下落,以确定其应该放在顶部的位置。
一个考虑因素是改为使用groundObject
并将新碰撞的地面对象附加到旧坠落对象的列表中,以便如果坠落对象接触多个地面,则只会将其形状更改为每个形状仅一次,因此它不会在某些条件下永久在形状之间振荡。