using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Death")
{
Destroy(gameObject);
}
}
}
Так а почему б не уточнить что именно не работает?
Для начала надо проверить срабатывает ли
например добавив Debug.Log.
Если срабатывает, то смотреть значение other.tag
(например тоже через Debug.Log
).
Если не срабатывает, то видимо что-то не так с настройками колайдера на объекте.
я поменял скрипт если тут всё правильно написано то проблемы с OnTriggerEnter2D, если он не работает, то что делать?
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Death")
{
Debug.Log("Collider!");
}
}
Про
я имел в виду сам обработчик события, про условие с тегом ниже написано.
private void OnTriggerEnter2D(Collider2D other)
{
Debug.Log("Collider!");
}
collider работает в консоль пишется Collider!
насчёт коллайдера в самом unity то и на объекте где стоит тег Death и на Enemy стоит box collider is trigger
Так раз пишет, значит срабатывает тригер, и видимо просто что-то не так с тегом.
Debug.Log("Collider! " + other.tag);
так?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyDeath : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Death")
{
Debug.Log("Collider! " + other.tag);
}
}
}
private void OnTriggerEnter2D(Collider2D other)
{
Debug.Log("Collider! " + other.tag);
}
я сначала так и написал но не чего не сработало просто в консоль пишет Collider! и тег с которым коснулся объект
Так а тег правильный пишет? Death
?
да.
я поменял тег и теперь вообще не пишет в консоль
вроде правильно
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyDeath : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
Debug.Log("Collider! " + other.tag);
}
}
я тут сделал новый скрипт и наложил его уже на объект который должен дестроить Enemy
но он тоже не работает , может с колайдером что то не то?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyDeath : MonoBehaviour
{
public GameObject enem;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Enemy")
{
Destroy(enem);
}
}
}
когда касаюсь Player он исчезает а когда касаюсь Death нет
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
Destroy(gameObject);
}
if (other.tag == "Death")
{
Destroy(gameObject);
}
}
}
Если
и
то может просто с тегом что-то не так? Не та буква или пробел в конце и т.п.
я это сделал щас по другому
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (transform.position.x < -5.19f)
{
Destroy(gameObject);
ScoreText.Score += 1;
}
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Player")
{
Destroy(gameObject);
}
}
}