2017-09-13 52 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