Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать задание, "пойди в это место" в unity

данил чуев Ученик (240), на голосовании 4 месяца назад
Здравствуйте! я хотел спросить как сделать задание по типу, "пойди в это место" в unity.
допустим у меня стоит триггер в нужной области и мне нужно, чтобы персонаж зашел туда и проигралась анимация, и чтобы если я потом снова зайду в эту область, анимация не проигрывалась.
Голосование за лучший ответ
Ctrl Ученик (221) 5 месяцев назад
Слишком много вопросов:
Игра 2d/3d, должна проигрывается анимация персонажа или вообще постороннего объекта, какой способ передвижения персонажа используете, должен ли триггер уничтожаться после вхождения или только анимация не проигрывается?
данил чуевУченик (240) 5 месяцев назад
Смотрите. 3d игра проигрывается анимация открытия холодильника и после триггер может быть уничтожен (хорошо что подметили) как то так. Ещё бы хотелось чтобы после всего этого появилось следующее задание
данил чуев Ученик (240) данил чуев, могу скинуть видео игры или написать вам куда то, чтобы рассказать больше подробностей
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; //задаем статичную переменную
}
данил чуев Ученик (240) Vladimir Kravenov, Если у меня что-то не получится, или я что-то не пойму, я могу вам куда нибудь написать чтобы решить проблему (вк, тг, дискорд)?
Похожие вопросы