Diminuer les points de vie du joueur

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Paullux
Messages : 68
Inscription : 12 Nov 2015 17:11
Contact :

Diminuer les points de vie du joueur

Message par Paullux » 07 Oct 2017 12:50

Bonjour,

Je fais un jeu avec Unity, et je veux que mes ennemis en touchant le joueur diminuent les points de vie de celui-ci.

dans le jouer, il y a un rigidBody et un CapsuleCollider, idem dans les ennemis.

Pour ça dans le script qui gère mouvement les ennemis, j'ai mis dans Update :

Code : Tout sélectionner

        if (ZombieTouch)
        {
            int PV = PlayerHead.GetComponent<PointDeVie>().getHP();
            int PVRandom = UnityEngine.Random.Range(10, 25);
            PV -= PVRandom;
            PlayerHead.GetComponent<PointDeVie>().setHP(PV);
            ZombieTouch = false;
        }
et j'ai ajouté :

Code : Tout sélectionner

    void OnTriggerStay(Collider other)
    {
        if (other.attachedRigidbody.name == "CardboardMain")
        {
            ZombieTouch = true;
        }
       ReturnPos = true;
    }
Et je ne comprends pas pourquoi les points de vie du joueur ne diminuent pas, pouvez-vous m'aider ?
J'ai créé un ensemble de jeux :

Un HUB : https://bit.ly/2J6EZTO
Un jeu avec contrôle tactile à l'écran : https://bit.ly/2J3IkTw
Un jeu en VR : https://bit.ly/2h5jdzk
Un jeu en AR : https://bit.ly/2LgMvIo

Il s'agit de FPS pour Android.

Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

Re: Diminuer les points de vie du joueur

Message par Roots » 07 Oct 2017 14:45

Salut !
Premièrement apprend à utiliser Debug.log , ça te permettra dans bien des cas de détecter où est l'erreur ou au moins de t'en approcher.
https://docs.unity3d.com/ScriptReference/Debug.Log.html

Deuxièmement même si ça ne règlera pas le problème il est bien plus logique de te passer de l'Update pour ce que tu as à faire, autant juste avoir une fonction que tu appel tant que le trigger est détecté donc directement dans ton OnTriggerStay et tu ajoute une variable de "temps" correspondant au temps minimal entre deux pertes de pv .

Je trouve ton bout de code déjà plus compliqué que ce qu'il devrait être ! Fait un tour sur le net tu trouvera vraiment des exemples optimisés et bien construit, pour info j'avais trouvé un tuto complet pour comment créer un hack and slash qui montrais tout en une 100 enes de videos : les caractéristiques, monté de niveaux , les degats ect

Pour te dire que tu trouvera des exemples simple que tu pourra adapter à ton projet :)

Pour essayer de te débloquer à l'aveuglette il faut qu'un de tes collider soit en Trigger , ça peut paraitre évident mais quand on débute on y pense pas forcement .

Amicalement !

Répondre

Revenir vers « (C#) CSharp »