質問: new Vector3(0,5,-3); Debug.Log(hit.gameObject); } } } ``` ### 試したこと if文の中でDebug.Log()した結果、衝突時は必ずOnControllerColliderHit()は呼ばれていることを確認しました。 オブジェクトをSphere、Cube、Capsuleに変えたり、傾けたりして当たりどころを変えてPlayerと衝突させると上手くワープできる時とできない時があります。 Cubeはどうやってもワープしてくれません。逆にSphereは必ずワープしてくれます。Capsuleは当たる場所によってまちまちです。 ### 補足情報(FW/ツールのバージョンなど) Unity 2019.1.12f1 personal
回答: 参考にされているサイトを見たところ、CharacterControllerを使ってキャラクターの操作をしているようですね。 CharacterControllerがアタッチされたオブジェクトのtransformに直接値を代入しようとすると、上手くいかない(強制的に戻される?)ことがあります。 positionに代入する部分だけCharacterControllerを無効化してみるのはどうでしょうか。 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerWarp : MonoBehaviour { void OnControllerColliderHit(ControllerColliderHit hit){ if (hit.gameObject.tag == "Warp") { GetComponent().enabled = false; transform.position = new Vector3(0,5,-3); GetComponent().enabled = true; Debug.Log(hit.gameObject); } } } ``` 違っていたらすみませんが、参考までに。