(方針)
- 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;
}
}
(確認)
- ワープスクリプトのついたオブジェクトに触れた瞬間に、毎回ワープすれば成功

