Unity desactivation d'un script

Fermé
Nehaliel - 26 sept. 2017 à 22:06
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 - 27 sept. 2017 à 17:07
Bonjour,



J'ai écris un script qui fait en sorte que si le joueur tombe de trop haut sur le sol il prend des dégâts, sauf que je souhaiterai faire en sorte que si il tombe sur un objet spécifique , qu'il ne prenne pas les dégâts.
Voici mon code :
#pragma strict
import UnityEngine.UI;
import UnityEngine;

var LastPosition : float;
var fallDistance : float;
var FPSController : GameObject;
public var Door : GameObject;

private var controller : CharacterController;

var health : int = 100;

function Start () {
controller = gameObject.GetComponent(CharacterController);
}

function Update () {
if(LastPosition > gameObject.transform.position.y){
fallDistance += LastPosition - gameObject.transform.position.y;
}

LastPosition = gameObject.transform.position.y;

if(fallDistance <= 3 && controller.isGrounded){ //Si le joueur fait une chute de moins de 3 mètre il se passe rien.
ResetSystem();
}

if(fallDistance > 3 && fallDistance <=6 && controller.isGrounded){ //Si le joueur fait une chute entre 3 et 6 mètre , alors il perd 20hp
health -= 20;
ResetSystem();
}

if(fallDistance > 6 && controller.isGrounded){ //Si le joueur fait une chute de plus de 6 mètre alors il perd 50 hp
health -= 100;
ResetSystem();
}

if (health <= 0)
{
RpcRespawn();
ResetSystem();
}
}

function ResetSystem(){
fallDistance = 0f;
LastPosition = 0f;
}

function RpcRespawn()
{
if (FPSController)
{
// move back to zero location
transform.position = Vector3(0,368,-48);
health += 100;
Door.SetActive(true);
}
}
A voir également:

5 réponses

Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919
27 sept. 2017 à 08:27
Bonjour

Déjà tu peux faire un test sur isground, puisqu’il apparaît dans toute sa tes clauses.
Ensuite tu regardes si la hauteur est inférieure à 3 mètres, ou s’il est tombé sur ton objet, si oui rien, sinon tu regardes si la hauteur est inférieure à 6 m ect.

if(controller.isGrounded)
{
    if(fallDistance <= 3 || test sur l’objet)
    {
        //on fait rien
    }
    else if(fallDistance <= 6)//ça évite de retester les conditions précédentes 
    {
        health -= 20;
     }
     else //ect.
     {
      }

      
}

0
Merci beaucoup pour ta réponse , et de m'avoir aider à raccourcir le code ^^. Maintenant je vais essayer de trouver comment faire un test pour l'objet en question.
0
up , toujours pas trouver
0
up^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919
27 sept. 2017 à 17:07
Faire un Up toutes les 2 h ne sert à rien
Pour info
https://www.commentcamarche.net/infos/25927-mon-message-n-a-recu-aucune-reponse/

Je ne connais pas Unity, et assez peu de messages sur le sujet trouvent réponse ici.
Sans élément de ta part, ça va pas être facile de t’aider.

Comment s’appelle ton objet, y’a t il moyen de comparer sa position avec celle d’un joueur?
0