[英]How to check objects collisions
我希望檢查3個對象(boxColliders)是否與其他多維數據集發生沖突。如果沖突為TRUE,則對象腳本必須通知Player。如何在兩個腳本之間移動? 如果物體與立方體碰撞,玩家將無法朝這個方向移動。
我嘗試過類似的操作,但腳本僅檢查播放器。
void OnCollisionStay(Collision collisionInfo){
if(collisionInfo.gameObject.tag == "Finish")
{
Debug.Log ("collision");
}
}
這是完整的播放器代碼
private Vector3 offset;
public GameObject player;
public GameObject center;
public GameObject right;
public GameObject left;
public int step=9;
public float speed =(float) 0.01;
bool input=true;
void Start () {
}
void Update () {
if(input==true)
{
if (Input.GetKey (KeyCode.RightArrow)) {
StartCoroutine ("moveRight");
input = false;
}
if (Input.GetKey (KeyCode.LeftArrow)) {
StartCoroutine ("moveLeft");
input = false;
}
}
}
IEnumerator moveLeft(){
for(int i=0;i<(90/step);i++){
player.transform.RotateAround (left.transform.position, Vector3.forward, step);
yield return new WaitForSeconds (speed);
}
center.transform.position = player.transform.position;
input = true;
}
IEnumerator moveRight(){
for(int i=0;i< (90/step);i++){
player.transform.RotateAround (right.transform.position, Vector3.back, step);
yield return new WaitForSeconds (speed);
}
center.transform.position = player.transform.position;
input = true;
}
void OnCollisionStay(Collision collisionInfo){
if(collisionInfo.gameObject.tag == "Finish")
{
Debug.Log ("collision");
}
}
將碰撞器和碰撞事件放在要識別碰撞的所有GameObject上。 如果您只想訪問其他對象的腳本,但是不確定要與哪個對象發生沖突,則可以執行以下操作:
void OnCollisionStay(Collision collisionInfo)
{
var cubeScript = collisionInfo.gameObject.GetComponent<CubeScriptTypeHere>();
var playerScript = collisionInfo.gameObject.GetComponent<PlayerScriptTypeHere>();
if(cubeScript != null)
{
//This object hit a cube
//Do something with cubeScript
}
if(playerScript != null)
{
//This object hit a player
//Do something with playerScript
}
}
顯然,將“ ScriptTypeHere”替換為您命名的實際腳本。 然后,您可以從碰撞事件訪問外部腳本的所有公共方法,屬性等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.