113 lines
3.2 KiB
C#
113 lines
3.2 KiB
C#
using System;
|
|
using Unity.VisualScripting;
|
|
using UnityEditor.SearchService;
|
|
using UnityEngine;
|
|
using UnityEngine.Experimental.GlobalIllumination;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
public class Droid : MonoBehaviour
|
|
{
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
private bool jumpKeyWasPressed = false;
|
|
private float horizontalInput;
|
|
private Rigidbody rigidbodyComponent;
|
|
private bool isGrounded = false;
|
|
private int energy = 0;
|
|
private int rota = 0;
|
|
[SerializeField] private GameObject fusee;
|
|
private UIManager UIManager;
|
|
private int life = 1;
|
|
private int nbrfusee = 1;
|
|
|
|
void Start()
|
|
{
|
|
UIManager = FindAnyObjectByType<UIManager>();
|
|
rigidbodyComponent = GetComponent<Rigidbody>();
|
|
StartCoroutine(UIManager.LifeUp(life, nbrfusee));
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if(Input.GetKeyDown(KeyCode.Space))
|
|
{
|
|
jumpKeyWasPressed = true;
|
|
}
|
|
horizontalInput = Input.GetAxis("Horizontal");
|
|
|
|
|
|
if (Input.GetKeyDown(KeyCode.E))
|
|
{
|
|
if (nbrfusee > 0)
|
|
{
|
|
GameObject ball = Instantiate(fusee, transform.position, new Quaternion(90, 90, 0, 0));
|
|
ball.GetComponent<Rigidbody>().linearVelocity =
|
|
new Vector3(20, 0, 0);
|
|
nbrfusee--;
|
|
StartCoroutine(UIManager.LifeUp(life, nbrfusee));
|
|
}
|
|
}
|
|
}
|
|
|
|
private void FixedUpdate(){
|
|
int speed = 5;
|
|
if (energy >= 5)
|
|
speed = 10;
|
|
if (jumpKeyWasPressed && isGrounded)
|
|
{
|
|
rigidbodyComponent.AddForce(Vector3.up * speed, ForceMode.VelocityChange);
|
|
jumpKeyWasPressed = false;
|
|
}
|
|
rigidbodyComponent.linearVelocity = new Vector3(horizontalInput * speed, rigidbodyComponent.linearVelocity.y, 0);
|
|
}
|
|
|
|
private void OnCollisionStay(Collision collision){
|
|
isGrounded = true;
|
|
}
|
|
private void OnCollisionExit(Collision collision){
|
|
isGrounded = false;
|
|
}
|
|
|
|
private void OnCollisionEnter(Collision collision)
|
|
{
|
|
if (collision.gameObject.layer == 7)
|
|
{
|
|
rota += 180;
|
|
Transform[] transforms = gameObject.GetComponentsInChildren<Transform>();
|
|
transforms[3].rotation = Quaternion.Euler(0, 0, rota);
|
|
}
|
|
if (collision.gameObject.layer == 10)
|
|
{
|
|
life -=2;
|
|
StartCoroutine(UIManager.LifeUp(life, nbrfusee));
|
|
if (life <= 0)
|
|
{
|
|
StartCoroutine(UIManager.GameOverSequence());
|
|
}
|
|
}
|
|
if (collision.gameObject.layer == 11)
|
|
{
|
|
|
|
}
|
|
}
|
|
private void OnTriggerEnter(Collider other)
|
|
{
|
|
if (other.gameObject.layer == 3)
|
|
{
|
|
Destroy(other.gameObject);
|
|
energy++;
|
|
life++;
|
|
nbrfusee++;
|
|
StartCoroutine(UIManager.LifeUp(life, nbrfusee));
|
|
|
|
}
|
|
if (other.tag == "exit" ){
|
|
SceneManager.LoadScene(1);
|
|
}
|
|
if (other.tag == "GameOver")
|
|
{
|
|
StartCoroutine(UIManager.GameOverSequence());
|
|
}
|
|
}
|
|
}
|