2016-09-01 3 views
0

Ich entwickle einen 2D Action-Platformer in Unity, ich habe eine Crawl-Funktion, die aktiviert, wenn das Spiel S drückt, aber ich brauche es, um den Kopf Collider in einen Trigger zu konvertieren, wenn der Spieler kriecht in einen engen Raum, den das Spiel aufnimmt und verhindert, dass sie wieder stehen, was zu Pannen führen würde. Wie konvertiere ich den Kopf Collider in einen TriggerKonvertiere einen Collider in einen Trigger

Bonus: Der Spieler haftet an anderen Colliders, wenn jemand weiß, wie das zu beheben ist, wird es sehr geschätzt. mit der isTrigger Eigenschaft des Collider

+2

Versuchen Sie nicht, den Collider in einen Trigger zu konvertieren, einen Head Collider und einen Trigger um den Kopf herum zu haben, und deaktivieren Sie den Collider, wenn der Spieler crawlt und den Trigger aktiviert. Und umgekehrt, wenn er steht. – JanR

+1

Sie können auch einen Raycast vom Boden nach oben oder von seinem Kopf nach oben machen, um sicherzustellen, dass genügend Platz zum Stehen ist, wenn nicht, dann verhindern Sie die stehende Aktion – JanR

Antwort

0

Sie können einen Collider in einen Trigger während der Laufzeit umwandeln, etwa so:

private Collider collider ; 

void Start() { 
    // Assuming this script goes on the head gameobject 
    collider = this.GetComponent<Collider>(); 
} 
void OnCollisionEnter(Collision col) { 
    this.collider.isTrigger = true; 
} 
void OnTriggerExit(Collider other) { 
    this.collider.isTrigger = false; 
} 

@JanR vorgeschlagene Lösung ist wahrscheinlich sauberer. Aber als Ihre Frage war, wie man einen Collider in einen Trigger umwandelt, dachte ich, es wäre eine Antwort wert.

Wie auch immer, abhängig von Ihrer Szenengeometrie kann dies immer unordentlich werden. Sie haben Probleme, wenn zwei oder mehr Collider mit Ihrem Kopf Collider/Trigger interagieren.

Sie können dieses Problem umgehen, indem Sie eine Liste der interagierenden Collider führen. Sie müssen OnCollisionEnter verwenden, um den Collider in der Liste zu registrieren und OnCollisionExit, um die Registrierung aufzuheben. Dann würden Sie den Collider nur reaktivieren, wenn die Liste leer ist.

Deshalb verwenden die meisten von uns Raycast statt Colliders/Trigger, um mit dieser Art von Situationen fertig zu werden.

Verwandte Themen