2017-09-13 53 views
0

我有一个玩家角色,由一些立方体,球体和胶囊组成。我创建了空的物体Player并且玩家的所有身体部位都是Player的孩子。我有两架飞机,中间有一个移动平台。我可以在普通飞机和墙壁上行走和跳跃,但是当玩家在移动平台上时,玩家的身体部位会分崩离析。也许这真的很愚蠢,但我刚开始使用Unity。团结 - 家长与孩子分崩离析

这是哪里出了问题,球员分崩离析的移动平台上:http://nl.tinypic.com/r/207s3sz/9

而关于概述,球员的身体部位,以及根据角色持有者移动平台下面的信息。所有正文部分都与屏幕截图上的body部分具有相同的属性。任何人都可以帮我解决这里出现的问题吗?我怎样才能通过移动平台来运输整个玩家?

enter image description here

enter image description here

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; 
    } 
} 
+0

,会发生什么,如果你删除'是Trigger'从角色持有者?为什么你需要2个碰撞体嵌套,即'MovingPlatform - > characterHolder'?如果你将你的'Body'上的'CapsuleCollider'替换为'BoxCollider',会发生什么?...我之前遇到过不同类型的对撞机之间发生碰撞的问题。 –

+0

你能显示你的HoldCharacter脚本吗? –

+0

当我禁用'是触发器'时,我可以站在移动平台上,不会崩溃,但是当平台移动时,玩家不会停留在平台上并掉下来。我使用了嵌套的“移动平台和CharacterHolder”,因为我在YouTube视频中看到了这一点。但是当我只用一只脚跳到平台上时,它就可以工作。因此,“平台脚”组合的作品,但身体的其他部分“释放”。只有在这个移动的平台上。 @DavidEspino – lakeviking

回答

2

你只需要禁用isTrigger标志。这里有一些见解

因此触发器的工作原理是...它会触发OnTriggerExitOnTriggerEnter,但它会让对象通过它。如果您禁用IsTrigger,那么您需要将逻辑移至OnCollisionEnterOnCollisionExit方法。如果取消选中isTrigger样的工作,也许只是你分别移动逻辑HoldCharacter到OnCollisionEnterOnCollisionEnd像这样一个事实:

void OnCollisionEnter(Collision collisionInfo) { 
    collisionInfo.gameObject.transform.parent = gameObject.transform; 
} 
void OnCollisionExit(Collision collisionInfo) { 
    collisionInfo.gameObject.transform.parent = null; 
} 

问候

+0

这工作。谢谢!! :) – lakeviking

0

如果我是正确的,有Rigidbodys对象的孩子有物理为好。也许把刚体放在玩家的孩子身上,像这样。

球员 -head -arms -legs -empty游戏物体与刚体

+0

你的意思是删除父母的刚体,并将刚体添加到所有子对象?当我尝试这个时,对象在'起始层'上分开。或者你的意思是“创建一个空的游戏对象,给它一个刚体,并将它作为一个孩子添加到玩家?并删除父母的刚体?'然后我不能再跳了,我可以穿过墙壁。或者我不明白你的意思? – lakeviking