(方針)
- OnTriggerEnterの当たり判定自体はとれている。
- しかし、ワープ(座標変更=移動)がうまく動作しない(動作することもあれば、しないこともある。不安定)
- CharacterControllerを一時的にオフにすることでこの問題を解消する。
(スクリプト)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WarpPoint : MonoBehaviour { public Vector3 pos; // ★ポイント private GameObject target; private void OnTriggerEnter(Collider other) { // ★ポイント // キャラクターコントローラをいったんオフにする。 target = other.gameObject; target.GetComponent<CharacterController>().enabled = false; // ワープ発動 other.gameObject.transform.position = new Vector3(pos.x, pos.y, pos.z); // ★ポイント // 0.5秒後にキャラクターコントローラをオンにする。 Invoke("ResetC", 0.5f); } // ★ポイント void ResetC() { target.GetComponent<CharacterController>().enabled = true; } }
(確認)
- ワープスクリプトのついたオブジェクトに触れた瞬間に、毎回ワープすれば成功