@developssh

Что я сделал не так, вход и выход из машины | UNITY | Что делать?

Написал код для входа в машину, все работает как часы
spoiler

using UnityEngine;
using System.Collections;

public class TriggerEnt : MonoBehaviour {
	
	public GameObject CarTrue;
	public GameObject CarFalse;
	public GameObject Player;
	private bool enter;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if (enter == true) {
			if (Input.GetKeyDown (KeyCode.F)) {
				CarTrue.SetActive (true);
				CarFalse.SetActive (false);
				Player.SetActive (false);

			}

		}
	}
	void OnTriggerEnter(Collider col)
	{
		if (col.tag == "Player") {
			enter = true;	
		}
	}
	void OnTriggerExit(Collider col)
	{
		if (col.tag == "Player") {
			enter = false;	
		}
	}	
}


А вот это не рабочий код для выхода из машины альтернатива, по сути он должен запускать выход из машины но ничего не происходит

spoiler

using UnityEngine;
using System.Collections;

public class TriggerExit : MonoBehaviour {
	
	public GameObject CarTrue;
	public GameObject CarFalse;
	public GameObject Player;
	private bool enter;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if (enter == true) {
			if (Input.GetKeyDown (KeyCode.F)) {
				CarTrue.SetActive (false);
				CarFalse.SetActive (false);
				Player.SetActive (true);

			}

		}
	}
	void OnTriggerEnter(Collider col)
	{
		if (col.tag == "Player") {
			enter = true;	
		}
	}
	void OnTriggerExit(Collider col)
	{
		if (col.tag == "Player") {
			enter = false;	
		}
	}	
}


Прошу укажите что не так... Не могу решить уже 4 дня..
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Вместо создания дополнительного скрипта можно создать дополнительную переменную. Логику CarTrue, CarFalse и Player я не понимаю, поэтому напишу без них, а вы сами добавите.
using UnityEngine;
using System.Collections;

public class CarTrigger : MonoBehaviour {

	// состояние - находится ли игрок в машине
	private bool isPlayerInCar;
	// состояние - присутствует ли игрок рядом с машиной
	private bool isPlayerNearCar;

	private void Update () {
		// проверку лучше начинать с кнопки, потому что без её нажатия ничего дальше не должно быть запущено
		if (Input.GetKeyDown(KeyCode.F)) {
			// в машине? да - выходим!
			if (isPlayerInCar) {
				// код выхода
				// не забываем про статус
				isPlayerInCar = false;
			// а если не в машине, то рядом ли мы с машиной? да - садимся
			} else if (isPlayerNearCar) {
				// соответствующий код
				// ну и статус тоже
				isPlayerInCar = true;
			}
		}
	}

	private void OnTriggerEnter(Collider col) {
		if (col.tag == "Player") {
			isPlayerNearCar = true;
		}
	}

	private void OnTriggerExit(Collider col) {
		if (col.tag == "Player") {
			isPlayerNearCar = false;
		}
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы