2017-02-21 8 views
0

У меня есть сценарий, чтобы порождать кошек в случайных положениях в игре, и когда пользователь нажимает на них, они должны быть уничтожены. У меня возникли проблемы с моим сценарием, и мне было интересно, знает ли кто-нибудь, что случилось с рабастом?Unity C# уничтожить порожденный сборный с щелчком мыши

public void CatClick() { 
      if (Input.GetMouseButtonDown (0)) { 
       Ray = Camera.main.ScreenPointToRay (Input.mousePosition); 

       if (Physics.Raycast(Ray, out RaycastHit)) { 

        Destroy(RaycastHit.collider.gameObject); 
      } 
     } 

    } 

ответ

1

Другой способ сделать это:

using UnityEngine; 
using System.Collections; 

public class CatDestructor : MonoBehaviour 
{ 


    // Use this for initialization 
    void Start() 
    { 

    } 

    // Update is called once per frame 
    void Update() 
    { 

    } 

    void OnMouseDown() 
    { 
     // Destroy game object 
     Destroy (this.gameObject); 
    } 
} 

Поместите этот скрипт в сборку «cat», и если вы нажмете на нее, она уничтожит «кошку».

Иливы должны поместить свой код, чтобы обновить функцию следующим образом:

void Update(){ 
    if (Input.GetMouseButtonDown(0)){ // if left button pressed... 
    Ray ray = camera.ScreenPointToRay(Input.mousePosition); 
    RaycastHit hit; 
    if (Physics.Raycast(ray, out hit)){ 
     // the object identified by hit.transform was clicked 
     // do whatever you want 
    } 
    } 
} 
1

Не следует ли проверять функцию обновления?

0

как Arne сказал, убедитесь, что вы проверить его в функции обновления, а также, если это 2d коллайдер убедитесь, что вы измените его на

if (Input.GetMouseButtonDown(0)) 
{ 
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
     RaycastHit2D hit = Physics2D.GetRayIntersection(ray, Mathf.Infinity); 

     if (hit.collider != null) 
     { 
       // do whatever you want to do here 
     } 
} 
Смежные вопросы