[DB - AL][UNITY 2D] Problème avec le Respawn

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
damien-max
Messages : 54
Inscription : 19 Déc 2017 23:44

[DB - AL][UNITY 2D] Problème avec le Respawn

Message par damien-max » 30 Jan 2018 21:19

Bonjour, j'aimerais avoir votre avis.

J'ai un script qui me permet de respawn lorsque je passe sous un niveau précis (hauteur) et il marche.

Le seul probleme, c'est que mon perso et tout ce qui va avec (arme) respawn bien, mais la position du curseur ne reviens pas sur la souris mais bouge en fonction des mouvement de celle ci depuis le dernier endroit ou je suis mort(le curseur étant un gameobject).

Je ne comprend pas car j'ai mis le curseur en tant que enfants mais rien n'y fais. Le gameobject "player" se detruit normalement et réparait bien mais le curseur reste a sa positions :/

Merci de votre aide. Si vous avez besoin d'une vidéo pour illustrer tout ça, il n'y a pas de problème.

PS: Mon problème est résolu! Mais je ne sais pas comment le mettre en résolu... ^^
Dernière édition par damien-max le 11 Fév 2018 17:19, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6219
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [UNITY 2D] Problème avec le Respawn

Message par boubouk50 » 31 Jan 2018 10:19

Sans le code utilisé pour ton curseur, c'est pas évident.
Tu l'as mis enfant de quoi?
Le réinitialises-tu au respawn? Genre sa position relative.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

damien-max
Messages : 54
Inscription : 19 Déc 2017 23:44

Re: [UNITY 2D] Problème avec le Respawn

Message par damien-max » 31 Jan 2018 18:43

boubouk50 a écrit :
31 Jan 2018 10:19
Sans le code utilisé pour ton curseur, c'est pas évident.
Tu l'as mis enfant de quoi?
Le réinitialises-tu au respawn? Genre sa position relative.
Bon alors voici le lien de la vidéo montrant le probleme + le script du curseur et du Game Master:

https://youtu.be/wEPqDuVgjzQ

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cursor : MonoBehaviour {

	void Start () {

        gameObject.transform.position = Input.mousePosition;
    }
	
	// Update is called once per frame
	void Update () {
		
	}
}

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class GameMaster : MonoBehaviour{

	public static GameMaster gm;

	void Start(){

		audio = GetComponent<AudioSource>();

		if (gm == null) {
			gm = this;
		}
	}

	AudioSource audio;
	public Transform playerPrefab;
	public Transform spawnPoint;
	public int spawnDelay = 2;
	public Transform spawnPrefab;

	public IEnumerator RespawnPlayer () {
		audio.Play ();
		yield return new WaitForSeconds (spawnDelay);

		Instantiate (playerPrefab, spawnPoint.position, spawnPoint.rotation);
		Instantiate (spawnPrefab, spawnPoint.position, spawnPoint.rotation);
	}

	public static void KillPlayer (Player player) {
		Destroy (player.gameObject);
		gm.StartCoroutine (gm.RespawnPlayer());
	}

}
J'espere que ca peut aider :/

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: [UNITY 2D] Problème avec le Respawn

Message par Max » 31 Jan 2018 20:07

Bonsoir Damien-max,

Tes scripts me laissent dubitatif :mrgreen:
Concernant la partie Cursor, tu as mis tout le code là ?
A savoir que tu as nommé ta classe Cursor comme une classe de l'API, Cursor, qui elle pourrait t'être utile, comme avec le SetCursor. A potasser je pense.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

Re: [UNITY 2D] Problème avec le Respawn

Message par Farstone » 01 Fév 2018 02:33

En faite, il faudrait savoir ou ce trouve ton GameObject, tu dit l'avoir mit en child mais de quoi ? Car dans ton script GameMaster on peux voir playerPrefab et spawnPrefab, alors si ton GameObject contenant ton script Cursor ne ce déplace pas (alors qu'il devrait être détruit en même temps que le Player GameObject) j'en déduis que le GameObject contenant Cursor est parent, donc tu doit crée une fonction dans ton script Cursor pour bouger ce fameux GameObject.

Code : Tout sélectionner


public class Cursor : MonoBehaviour 
{
	void Start ()
	{
	ResetCursor();
        }
        
        void ResetCursor()
        {
        gameObject.transform.position = Input.mousePosition;
        }
}

Code : Tout sélectionner

public Cursor cursorScript; // On récupère l'instance du script Cursor, drag and drop ton gameObject contenant Cursor ici dans la hierarchie.
public IEnumerator RespawnPlayer ()
{
	audio.Play ();
	yield return new WaitForSeconds (spawnDelay);

	Instantiate (playerPrefab, spawnPoint.position, spawnPoint.rotation);
	Instantiate (spawnPrefab, spawnPoint.position, spawnPoint.rotation);
	cursorScript.ResetCursor(); // On appel la méthode pour reset
}

damien-max
Messages : 54
Inscription : 19 Déc 2017 23:44

Re: [DB - AL][UNITY 2D] Problème avec le Respawn

Message par damien-max » 01 Fév 2018 21:30

D'accord, merci de vos réponse :)

Je teste ça au plus vite!

EDIT: j'ai appliquer le script mais ca ne marche pas. Peut etre j'ai zappé une partie?
Dernière édition par damien-max le 01 Fév 2018 21:53, édité 2 fois.

damien-max
Messages : 54
Inscription : 19 Déc 2017 23:44

Re: [UNITY 2D] Problème avec le Respawn

Message par damien-max » 01 Fév 2018 21:32

Twiixy a écrit :
01 Fév 2018 02:33
En faite, il faudrait savoir ou ce trouve ton GameObject, tu dit l'avoir mit en child mais de quoi ? Car dans ton script GameMaster on peux voir playerPrefab et spawnPrefab, alors si ton GameObject contenant ton script Cursor ne ce déplace pas (alors qu'il devrait être détruit en même temps que le Player GameObject) j'en déduis que le GameObject contenant Cursor est parent, donc tu doit crée une fonction dans ton script Cursor pour bouger ce fameux GameObject.

Code : Tout sélectionner


public class Cursor : MonoBehaviour 
{
	void Start ()
	{
	ResetCursor();
        }
        
        void ResetCursor()
        {
        gameObject.transform.position = Input.mousePosition;
        }
}

Code : Tout sélectionner

public Cursor cursorScript; // On récupère l'instance du script Cursor, drag and drop ton gameObject contenant Cursor ici dans la hierarchie.
public IEnumerator RespawnPlayer ()
{
	audio.Play ();
	yield return new WaitForSeconds (spawnDelay);

	Instantiate (playerPrefab, spawnPoint.position, spawnPoint.rotation);
	Instantiate (spawnPrefab, spawnPoint.position, spawnPoint.rotation);
	cursorScript.ResetCursor(); // On appel la méthode pour reset
}
enfaite, cursor est enfant de Player. Voilà :)

damien-max
Messages : 54
Inscription : 19 Déc 2017 23:44

Re: [UNITY 2D] Problème avec le Respawn

Message par damien-max » 01 Fév 2018 21:54

Max a écrit :
31 Jan 2018 20:07
Bonsoir Damien-max,

Tes scripts me laissent dubitatif :mrgreen:
Concernant la partie Cursor, tu as mis tout le code là ?
A savoir que tu as nommé ta classe Cursor comme une classe de l'API, Cursor, qui elle pourrait t'être utile, comme avec le SetCursor. A potasser je pense.
Je viens de me rendre compte que je ne t'ai pas tout dis :)

voici un autre script du cursor:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class MousePositionCursor : MonoBehaviour
{

    Vector3 posMouse;

    // Use this for initialization
    void Awake()
    {

    }

    // Update is called once per frame
    void Update()
    {
        posMouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        posMouse.z = 0;
        gameObject.transform.position = posMouse;
    }
}

Répondre

Revenir vers « (C#) CSharp »