Ressources

Catégorie scripts.

Le panda anti Adblock

CarEnter.cs

Script permettant d'entrer / sortir d'un véhicule.
Copier
								
									 
// Système permettant d'entrer / sortir d'un véhicule.
// Ce script est basé sur la voiture du Standard Assets mais avec quelques adaptations il peut
// être utilisé pour tout type de véhicule (terrestre, marin, aérien, ...)

// Vidéo tutorial / mise en place : https://www.youtube.com/watch?v=QOIwz9m9xLI

using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
using UnityStandardAssets.Vehicles.Car;

public class CarEnter : MonoBehaviour {

	public GameObject player;
	public GameObject car;
    public GameObject carCamera;

    private bool canEnter;
    private bool isInside;
    private AudioSource[] carAudio;

    private float timeLeft;
    private bool canLeave = false;

    private void Start()
    {
        car = transform.parent.gameObject;
        player = GameObject.FindGameObjectWithTag("Player");
        timeLeft = 1f;
    }

    void Update () {

		// Si on entre dans la voiture
		if(canEnter && Input.GetKeyDown("e")) {
			isInside = true;

			player.transform.parent = car.transform;
			player.SetActive(false);

			carCamera.SetActive(true);

			car.GetComponent< CarController>().enabled = true;
			car.GetComponent< CarUserControl>().enabled = true;
			car.GetComponent< CarAudio>().enabled = true;

            timeLeft = 1f;

            // On récupère et on active toutes les audio sources
            carAudio = car.GetComponents< AudioSource>();

            foreach (AudioSource single in carAudio)
            {
                single.enabled = true;
            }
        }

		// Si on sort de la voiture
		if (isInside && canLeave && Input.GetKeyDown("e")) {
			player.transform.parent = null;
			player.SetActive(true);

			carCamera.SetActive(false);

			car.GetComponent< CarController>().enabled = false;
			car.GetComponent< CarUserControl>().enabled = false;
			car.GetComponent< CarAudio>().enabled = false;

			isInside = false;
            canLeave = false;

            timeLeft = 1f;

            foreach (AudioSource single in carAudio)
            {
                single.enabled = false;
            }
        }

        // Délais d'attente entre l'entrée et la sortie de la voiture
        // (Permet aussi d'utiliser la même touche pour entrer et sortir)
        if (timeLeft > 0 && isInside)
        {
            timeLeft -= Time.deltaTime;
            canLeave = false;
        }
        else if(timeLeft <= 0 && isInside)
        {
            canLeave = true;
        }
    }

	// Detection du joueur dans le cube d'entrée
	void OnTriggerEnter(Collider other) {

		if(other.gameObject.tag == "Player"){
			canEnter = true;
		}
	}

	void OnTriggerExit(Collider other) {

		if(other.gameObject.tag == "Player"){
			canEnter = false;
		}
	}

}