Как описать правильно аптечки в скрипте игрока?
Создать новый тип бонуса на уровне - аптечки, которые могут хранить разную величину лечения. При соприкосновении аптечки с любым объектом, содержащим компонент Health, аптечка должна добавить объекту величину лечения и пропасть с игровой сцены. Игрок содержит компонент Health.Мне нужно в скрипте игрока обратиться к методу
public void SetHealth(int bonusHealth)
{
health+= bonusHealth;
}
и прибавить тем самым бонусное здоровье к основному здоровью игрока.
public void OnTriggerEnter2D(Collider2D col)
{
if(col.gameObject.CompareTag("Tablet"))
{
Destroy(col.gameObject);
}
}
На данный момент у меня аптечки уничтожаются,но здоровье не прибавляют.Помогите пожалуйста.
Ответы (3 шт):
Автор решения: timur
→ Ссылка
Вы это хотели сделать?
public void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.CompareTag("Tablet"))
{
Destroy(col.gameObject);
SetHealth(/*здесь напишите сколько надо прибавить*/);
}
}
Автор решения: Юрий
→ Ссылка
public void OnTriggerEnter2D(Collider2D col)
{
if(col.gameObject.CompareTag("Tablet"))
{
Destroy(col.gameObject);
SetHealth(10);
}
}
}
Я получаю компонент Health и пишу метод внутри этого компонента.Так как компонент "Health"прикреплён к игроку,то аптечка собирается,а здоровье уходит игроку.
Автор решения: Yaroslav
→ Ссылка
public enum HealPotionSize { Small, Medium, Large }
public class HealPotion : MonoBehaviour {
[SerializeField] private HealPotionSize _size;
private int _healing;
private void Start () {
switch (_size) {
case HealPotionSize.Small: _healing = 10; break;
case HealPotionSize.Medium: _healing = 20; break;
case HealPotionSize.Large: _healing = 30; break;
}
}
private void OnTriggerEnter (Collider other) {
if (other.TryGetComponent<Player>(out Player player)) {
player.SetHealth(_healing);
Destroy(gameObject);
}
}
}