2016-06-14 23 views
0

だから、私はプレイヤーがはしごに登ることを可能にするスクリプトを作った。私は "FREE Footstep System" Unityアセットからわずかに修正されたFPSプレハブを使用しています。バグは、はしごを上るときはすべて正常に動作しますが、下に行くと床の下に行くことができます。プラス、トリガーを離れると、プレイヤーは少し前に移動して、スティッキングを回避します。そのため、貼り付け防止機能が実行されますが、それ以外の機能は実行されません。それを修正するには?Unity 5のはしごのバグ

UPD:コードを忘れてしまった!

using UnityEngine; 
using System.Collections; 

public class ClimbOnLadder : MonoBehaviour { 
    public bool isClimbing = false; 
    private Transform playerTransform; 
    private Vector3 newPlayerPosition; 
    void OnTriggerEnter(Collider colliderEntered) 
    { 
     if (colliderEntered.gameObject.CompareTag("Player")) 
     { 
      isClimbing = true; 
      colliderEntered.gameObject.GetComponent<CharacterController>().enabled = false; 
      colliderEntered.gameObject.GetComponent<CapsuleCollider>().enabled = true; 
      colliderEntered.gameObject.GetComponent<Footsteps.FirstPersonController>().enabled = false; 
      colliderEntered.gameObject.GetComponent<Footsteps.CharacterFootsteps>().enabled = false; 
      playerTransform = colliderEntered.gameObject.GetComponent<Transform>(); 
     } 
    } 

    void OnTriggerExit(Collider colliderLeft) 
    { 
     if (colliderLeft.gameObject.CompareTag("Player")) 
     { 
      isClimbing = false; 
      newPlayerPosition.Set(gameObject.GetComponent<Transform>().localPosition.x + 0.125F, playerTransform.localPosition.y + 0.25F, playerTransform.localPosition.z); 
      playerTransform.position = newPlayerPosition; 
      colliderLeft.gameObject.GetComponent<CharacterController>().enabled = true; 
      colliderLeft.gameObject.GetComponent<CapsuleCollider>().enabled = false; 
      colliderLeft.gameObject.GetComponent<Footsteps.FirstPersonController>().enabled = true; 
      colliderLeft.gameObject.GetComponent<Footsteps.CharacterFootsteps>().enabled = true; 
      playerTransform = null; 
      newPlayerPosition.Set(0, 0, 0); 
     } 
    } 

    void FixedUpdate() 
    { 
     if (isClimbing) 
     { 
      newPlayerPosition.Set(playerTransform.localPosition.x, playerTransform.localPosition.y + (Input.GetAxis("Vertical")*0.0675F), playerTransform.localPosition.z); 
      playerTransform.localPosition = newPlayerPosition; 
     } 
    } 
} 
+0

あなたのはしごは床に届いていますか?通常は、フロアに接続する前に停止します。 – Master117

+0

あなたの質問ではなく、あなたの質問にコードを追加する必要があります。 – ManoDestra

+0

Woah。どういうわけか、私は部分的に、衝突者の位置を固定することによってこのバグを修正することができました。これで、OnTriggerExit関数全体が機能します。わーい! – ArtyomIsFlash

答えて

0

Woah。どういうわけか、私は部分的に、衝突者の位置を固定することによってこのバグを修正することができました。これで、OnTriggerExit関数全体が機能します。わーい!

UPD:問題を完全に修正しました。それはもはや必要ではなく、はしごをより高く動かすので、固着防止コードを削除しました。

関連する問題