【发布时间】:2018-02-22 17:21:48
【问题描述】:
我有一个玩家角色,由一些立方体、球体和一个胶囊组成。我创建了空对象Player,玩家的所有身体部位都是Player 的孩子。我有两架飞机,中间有一个移动平台。我可以在普通飞机和墙壁上行走和跳跃,但是当玩家在移动平台上时,玩家的身体部位会分崩离析。也许这真的很愚蠢,但我刚开始使用 Unity。
这就是问题所在,玩家在移动平台上崩溃了:http://nl.tinypic.com/r/207s3sz/9
下面是关于概述、玩家、身体部位和带有相应角色持有人的移动平台的信息。所有正文部分都具有与屏幕截图上的body 部分相同的属性。谁能帮我解决这里出了什么问题?如何通过移动平台运送整个播放器?
HoldCharacter 脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HoldCharacter : MonoBehaviour {
void OnTriggerEnter(Collider other) {
other.transform.parent = gameObject.transform;
}
void OnTriggerExit(Collider other)
{
other.transform.parent = null;
}
}
【问题讨论】:
-
如果您从角色持有者中删除
is Trigger会发生什么?为什么需要 2 个嵌套的碰撞器MovingPlatform -> characterHolder?如果您将Body上的CapsuleCollider替换为BoxCollider,会发生什么?...我之前遇到过不同类型对撞机之间的碰撞问题。 -
你能展示你的 HoldCharacter 脚本吗?
-
当我禁用'is trigger'时,我可以站在移动的平台上,不会崩溃,但是当平台移动时,玩家不会停留在平台上并摔倒。我使用了嵌套的“移动平台和 CharacterHolder”,因为我在 YouTube 视频中看到了这一点。但是当我只用一只脚在平台上跳跃时,它就起作用了。所以“平台-脚”的组合有效,但身体的其他部分“释放”。只有在这个移动的平台上。 @大卫埃斯皮诺
-
所以触发器的工作原理是......它会触发
OnTriggerExit和OnTriggerEnter,但它会让对象go through它。如果禁用IsTrigger,则需要在OnCollisionExit方法上将逻辑移至OnCollisionEnter。如果isTriggeruncheck 有效,可能只是因为您将HoldCharacter的逻辑分别移动到OnCollisionEnter和OnCollisionEnd。 -
是的...我认为这是因为您 HoldCharacter MonoBehavior 上的
OnTriggerEnter和OnTriggerExit... 用这个void OnCollisionEnter(Collision collisionInfo) { collisionInfo.gameObject.transform.parent = gameObject.transform; } void OnCollisionExit(Collision collisionInfo) { collisionInfo.gameObject.transform.parent = null; }替换HoldCharactercode 值得一试
标签: unity3d unity5 unity3d-editor