Ctrl
Ученик
(221)
5 месяцев назад
Слишком много вопросов:
Игра 2d/3d, должна проигрывается анимация персонажа или вообще постороннего объекта, какой способ передвижения персонажа используете, должен ли триггер уничтожаться после вхождения или только анимация не проигрывается?
данил чуевУченик (240)
5 месяцев назад
Смотрите. 3d игра проигрывается анимация открытия холодильника и после триггер может быть уничтожен (хорошо что подметили) как то так. Ещё бы хотелось чтобы после всего этого появилось следующее задание
CtrlУченик (221)
5 месяцев назад
Сейчас напишу что в голову приходит. Вопрос в передвижении персонажа как в катсцене или в UI отображении задания?
CtrlУченик (221)
5 месяцев назад
using UnityEngine;
using UnityEngine.UI;
public class Trigger : MonoBehaviour
{
[SerializeField] private Vector3 _point; //Задаем в инспекторе
[SerializeField] private Animator _fridgeAnim; //Перетаскиваем GameObject с Animator'ом,
//анимация которого должна проигрываться
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
_fridgeAnim.SetBool("{параметр в окне Animator}", true); //один из двух вариантов
_fridgeAnim.SetTrigger("{параметр в окне Animator}"); // один из двух вариантов
MissionController.instance.MissionAcomplished(); //Получаем контроллер и вызываем функцию заверешния задания
Destroy(gameObject);
}
}
}
CtrlУченик (221)
5 месяцев назад
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MissionController : MonoBehaviour //я бы использовал scriptableObject в качестве контроллера вместо синглтона
{
public static MissionController instance; //Паттерн Singleton
//создаем одну пустышку на сцену и вешаем скрипт
[SerializeField] private string[] _missions; //В инспекторе заполняем список миссий
[SerializeField] private Text _text;
private int curMissionIndex = 0;
public void MissionAcomplished() //Когда миссия завершена вызываем функцию
{
curMissionIndex++;
_text.text = _missions[curMissionIndex]; //Задаем текст задания
}
}
CtrlУченик (221)
5 месяцев назад
Еще в missionController должна быть функция Awake
private void Awake()
{
Destroy(instance); //Если уже есть контроллер (хотя не должно быть)
instance = this; //задаем статичную переменную
}
допустим у меня стоит триггер в нужной области и мне нужно, чтобы персонаж зашел туда и проигралась анимация, и чтобы если я потом снова зайду в эту область, анимация не проигрывалась.