Задать вопрос
@GmDvlpr

Raycast unity2D, не находит объект, что делать?

Я хочу создать игру, где появляются враги, и по нажатию по ним они уничтожаются.
вид сверху

Мне сказали, что можно использовать для этого Raycast, Я пытался использовать его, но по нажатию на врагов ничего не происходит, хотя я писал destroy
Вот код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Hitenemy : MonoBehaviour
{
    public GameObject man;
    GameObject enemy;
    public Text score;
    public int count = 0;
    void Start()
    {
        StartCoroutine(Spawn());
    }

    
    

    IEnumerator Spawn()
    {
        while (true)
        {
            man.transform.position = new Vector2(Random.Range(-2.21f, 2.195f), Random.Range(-4.354f, 2.498f));
           enemy= Instantiate(man);
            yield return new WaitForSeconds(1.5f);

            //   Destroy(enemy);
            // yield return new WaitForSeconds(1.5f);
        }
    }
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;     
        
        if (Physics.Raycast(ray, out hit, 1000,LayerMask.GetMask("enemi")))
         {            
           Destroy(enemy);
         }

       
    }

    private void OnMouseDown()
    {
       
        enemy=GameObject.FindWithTag("Player");
        Destroy(enemy);
        count++;
       score.text = count.ToString();
    }
}

второй день уже не могу решить эту дичь, хотя думаю, что это дело 5 минут(скорее всего это так)

я пытался на камеру повесить скрипт, ничего не происходит
создал 3д объект, убрал из него mesh collider, но по нажатию на любую область в объекте score увеличивается, только вот когда нажимаю на врагов, то они не уничтожаются.
  • Вопрос задан
  • 1263 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
MrMureno
@MrMureno Куратор тега Unity
VR for all
давайте попробуем по полочкам. систематизировать все ваши прошлые вопросы и попытки.
я б советовал с нуля сделать,чтоб было "чисто и ясно" и без оглядки на прошлые попытки и путаницу.

- в сцене будет главный объект. проверятель нажатия и создатель объектов.
- инстанцируются объекты пусть через бесконечный цикл в коронтине (хотя как по мне лучше был бы таимер на Update, но тут думаю не принципиально)
- проверка попадания по объекту - на Update через Raycast

теперь к мелочам.
  • найдите документацию или примеры на форуме про RaycastHit hit;
    там внутри hit - куча информации во что вы лучом попали и по хороше добавить бы проверку что попали именно в нужный объект, мало ли что там еще слоем или тегом будет помечено случайно.
  • саму проверку "скастовать луч" - вам бы делать только по клику/Down/Up мышкой (смотрите в сторону Input)
  • для работы с 2D колайдерами есть отдельные реикасты Physics2D. чтоб избавится от костылей с 3d коллайдерами))

Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
На враге должен быть коллайдер с флагом триггер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы