Не работает OnCollisionEnter() в Unity

Ошибки и баги Unity3D

Не работает OnCollisionEnter() в Unity

Сообщение Horthy 28 дек 2023, 11:35

Я пытаюсь сделать систему здоровья в Unity, но она никак не хочет работать, а именно OnCollisionEnter просто не читает столкновения(Код снизу). Всего у меня 2 скрипта - первый это само хп, а второй - содержит в себе int переменную урона, чтобы можно было изменять урон оружию


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class HPscript : MonoBehaviour
{
public int health;
public Slider slider;
public int dmg;
void Start()
{
slider = slider.GetComponent<Slider>();
}

void OnCollisionEnter(GameObject other)
{
Debug.Log("Касание!");
dmg = other.GetComponent<Damage>().DamageCount;
GetDamage(dmg);

}


void Update()
{
}

public void GetDamage(int damage)
{
health -= damage;
slider.value = health;
if(health <= 0)
{
Destroy(gameObject);
}
}
}

Не знаю, важно ли это, но обьект со скриптом содержит NavMesh и да - я относительный новичок, поэтому и прошу помощи, заранее спасибо)
Последний раз редактировалось Horthy 28 дек 2023, 15:54, всего редактировалось 1 раз.
Horthy
UNец
 
Сообщения: 8
Зарегистрирован: 28 дек 2023, 11:30

Re: Не работает OnCollisionEnter() в Unity

Сообщение Alkos26Rus 28 дек 2023, 12:22

Синтаксис:
Используется csharp
void OnCollisionEnter(Collision collision)

https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Не работает OnCollisionEnter() в Unity

Сообщение Horthy 28 дек 2023, 21:34

Alkos26Rus писал(а):
Синтаксис:
Используется csharp
void OnCollisionEnter(Collision collision)

https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html
я всё перечитал, но ничего дельного не нашел, я всё таки думаю, что проблема в NavMesh агенте на обьекте со скриптом
Horthy
UNец
 
Сообщения: 8
Зарегистрирован: 28 дек 2023, 11:30

Re: Не работает OnCollisionEnter() в Unity

Сообщение Tolking 28 дек 2023, 22:30

Horthy писал(а): void OnCollisionEnter(GameObject other)

void OnCollisionEnter(Collision collision)

разницу видишь?
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Не работает OnCollisionEnter() в Unity

Сообщение Horthy 28 дек 2023, 23:35

Tolking писал(а):
Horthy писал(а): void OnCollisionEnter(GameObject other)

void OnCollisionEnter(Collision collision)

разницу видишь?

Тогда, могу ли я таким образом получать переменную?
Horthy
UNец
 
Сообщения: 8
Зарегистрирован: 28 дек 2023, 11:30

Re: Не работает OnCollisionEnter() в Unity

Сообщение Alkos26Rus 29 дек 2023, 15:15

Horthy писал(а):Тогда, могу ли я таким образом получать переменную?

Синтаксис:
Используется csharp
collision.GetComponent<Damage>().DamageCount;

если Damage висит на том же объекте что и коллизия, либо двигайся по иерархии выше parent, root
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Не работает OnCollisionEnter() в Unity

Сообщение Horthy 01 янв 2024, 12:41

Alkos26Rus писал(а):
Horthy писал(а):Тогда, могу ли я таким образом получать переменную?

Синтаксис:
Используется csharp
collision.GetComponent<Damage>().DamageCount;

если Damage висит на том же объекте что и коллизия, либо двигайся по иерархии выше parent, root
Пишет "Assets\Scripts\Enemy\HPscript.cs(19,25): error CS1061: 'Collision' does not contain a definition for 'GetComponent' and no accessible extension method 'GetComponent' accepting a first argument of type 'Collision' could be found (are you missing a using directive or an assembly reference?)"
Horthy
UNец
 
Сообщения: 8
Зарегистрирован: 28 дек 2023, 11:30

Re: Не работает OnCollisionEnter() в Unity

Сообщение Horthy 01 янв 2024, 12:41

.
Последний раз редактировалось Horthy 01 янв 2024, 16:34, всего редактировалось 1 раз.
Horthy
UNец
 
Сообщения: 8
Зарегистрирован: 28 дек 2023, 11:30

Re: Не работает OnCollisionEnter() в Unity

Сообщение Horthy 01 янв 2024, 13:15

Horthy писал(а):
Alkos26Rus писал(а):
Horthy писал(а):Тогда, могу ли я таким образом получать переменную?

Синтаксис:
Используется csharp
collision.GetComponent<Damage>().DamageCount;

если Damage висит на том же объекте что и коллизия, либо двигайся по иерархии выше parent, root
Пишет "Assets\Scripts\Enemy\HPscript.cs(19,25): error CS1061: 'Collision' does not contain a definition for 'GetComponent' and no accessible extension method 'GetComponent' accepting a first argument of type 'Collision' could be found (are you missing a using directive or an assembly reference?)"
в общем, всё заработало, всем кто помог ОГРОМНОЕ спасибо)
Horthy
UNец
 
Сообщения: 8
Зарегистрирован: 28 дек 2023, 11:30


Вернуться в Глюки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3