質問
私はゆっくりとUnity 3Dを学んでいます。私は迷路を作ろうとしていますが、フィニッシュエリアに到達したときにイベントが発生する必要があります。
オブジェクトの場所を取得し、ターゲットエリアにあるかどうかを確認するにはどうすればよいですか? JavaScriptを使用します。
助けてくれてありがとう!
解決
エンドエリアをボックスとして扱うことができる場合は、フィニッシュエリアの周りのシーンにBoxColliderを追加して設定できます。 isTrigger
真のプロパティ。次に、コールバックを取得します OnTriggerEnter
エンティティがエリアに入ったときに、その後、レベルなどを終了するために使用できます。
他のヒント
ピーターとして 団結回答に関する状態:
あなたが剛体を持っている場合、あなたはあなたの剛体が眠っているかどうかを確認するためにrigidbody.issleping()を行うことができます
キャラクターコントローラーを使用している場合は、CharacterController.Velocity == vector3.zeroのかどうかを確認してください。
または、最後の位置を思い出すすべてのフレームをVector3に手動で保存することができます。何かのようなもの:
function Update () {
curPos = position;
if(curPos == lastPos) {
print("Not moving");
}
lastPos = curPos;
}
ターゲットエリアでフィニッシュエリアを意味する場合は、いくつかの方法でこれを行うことができます
Collidesを使用できます
簡単な方法で:(1)平面を作成し、「finish」(2)というタグを作成し、プレーヤーを選択し、インスペクターのドロップダウン「タグ」をクリックします。 「仕上げ」を検索して選択します。また、GameObjectにコリダーを追加する必要があります。
次に、新しいJavaScriptを作成して、このコードを追加します
function OnCollisionEnter(collision : Collision){
if(collision.gameObject.tag == "finish"){
//"STOP GAMEOBJECT FROM MOVING"
}
}
または、この方法を使用します
このスクリプトをプレーヤーに配置します。このスクリプトは、おそらくあなたがしていることのためにコリダーを使うのと同じように神と同じです
var other : Transform;
function Update ()
{
var dist = Vector3.Distance(other.position, transform.position);
if (dist < 100)
{
//stop player movent here
// move player to exact finish position over time
}
}