2017-05-16 1 views
0
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Move : MonoBehaviour { 

    enum MoveProperties 
    { 
     DirectionStart, 
     DirectionEnd 
    }; 

    public float spinSpeed = 2.0f; 

    private bool rotate = false; 
    private bool exited = false; 
    private List<GameObject> prefabs; 

    private void Start() 
    { 
     InstantiateObjects gos = GetComponent<InstantiateObjects>(); 

     prefabs = new List<GameObject>(); 
     prefabs = gos.PrefabsList(); 
    } 

    void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.tag == "Player") 
     { 
      Debug.Log("Player entered the hole"); 
      rotate = true; 
     } 
    } 

    private void OnTriggerExit(Collider other) 
    { 
     if (other.gameObject.tag == "Player") 
     { 
      Debug.Log("Player exited the hole"); 
      rotate = false; 
      exited = true; 
     } 
    } 

    void Rotate() 
    { 
     if (rotate) 
     { 
      transform.Rotate(Vector3.up, spinSpeed * Time.deltaTime); 
      spinSpeed += 1f; 
     } 
     if (rotate == false && exited == true) 
     { 
      transform.Rotate(Vector3.up, spinSpeed * Time.deltaTime); 
      if (spinSpeed > 0.0f) 
       spinSpeed -= 1f; 
     } 
    } 

    private void Update() 
    { 
      Rotate(); 
    } 
} 

ここで2つのトリガーがあります。キャラクターがすでに他のゲームオブジェクトの中にあるかどうかを検出するにはどうすればよいですか?</p> <p>OnTriggerEnterとOnTriggerExit:

しかし、キャラクターが最初に出てから再び入った場合、このトリガーが機能します。または外出した。しかし、私は文字がすでに内部にある間に検出する必要があります。 最初に出て再び入ることはありません。

状況は、文字が1つの場所(オブジェクトの内側の穴)にあり、次に文字の位置を穴のある別のオブジェクトに変更するという状況です。位置を変更した後、文字が第2の穴の内側にあることを何とか検出する必要があります。

答えて

6

しかし、この文字が最初に出てから が再び入り込んだ場合、このトリガは機能します。または外出した。しかし、文字 がすでに入っている間に検出する必要があります。最初に外出して再び入ることなく。

あなたはOnTriggerStay機能を探しています。両方のColliderが互いに内部にある限り、OnTriggerStayは常にすべてのフレームで呼び出されます。

void OnTriggerStay(Collider other) 
{ 

} 

あなたは衝突の代わりにトリガーを使用することを決定した場合OnCollisionStayもあります。

void OnCollisionStay(Collision collisionInfo) 
{ 

} 
関連する問題