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;
}
}
}
あなたのはしごは床に届いていますか?通常は、フロアに接続する前に停止します。 – Master117
あなたの質問ではなく、あなたの質問にコードを追加する必要があります。 – ManoDestra
Woah。どういうわけか、私は部分的に、衝突者の位置を固定することによってこのバグを修正することができました。これで、OnTriggerExit関数全体が機能します。わーい! – ArtyomIsFlash