[RESOLU] Comment switcher le mode déplacement ?

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
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
boubouk50
ModoGenereux
ModoGenereux
Messages : 6208
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [HELP] Comment switcher le mode déplacement ?

Message par boubouk50 » 18 Août 2017 14:33

Humm, alors je ne vois pas trop...
Je n'aime pas trop ton CameraController_fly, il n'utilise pas le rigidbody attaché à ton perso. Mais si tu me dis qu'il fonctionne correctement avec, alors il n'y a pas de raison qu'il ne marche pas après le switch...
Peux-tu éditer ton post précédent avec le script du switch stp, tu as copier 2 fois le CameraController_fly, ou bien est-ce exactement celui de Greg du post précédent?
"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

Nattahnam
Messages : 18
Inscription : 31 Mars 2017 16:26

Re: [HELP] Comment switcher le mode déplacement ?

Message par Nattahnam » 21 Août 2017 10:15

Erreur de copié/coller ! Le Switch est bien celui de Greg !

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

Re: [HELP] Comment switcher le mode déplacement ?

Message par boubouk50 » 21 Août 2017 10:33

Dans ce cas, je ne vois pas. Peut-être essayer de nous vfaire une vidéo pour qu'on se rende compte du comportement.
La prochaine étape est de coller des Debug.Log ("Mon Texte ici"); dans tes conditions pour avoir un peu plus d'infos sur où cela pourrait venir.
"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

Nattahnam
Messages : 18
Inscription : 31 Mars 2017 16:26

Re: [HELP] Comment switcher le mode déplacement ?

Message par Nattahnam » 21 Août 2017 13:42

D'accord ! Merci quand même, je vais continué a chercher ! :)

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [HELP] Comment switcher le mode déplacement ?

Message par Greg » 28 Août 2017 20:43

Je n'aime pas ton controller non plus... C'est pas juste cette ligne :

Code : Tout sélectionner

transform.position += (transform.right * Input.GetAxis("Horizontal") + transform.forward * Input.GetAxis("Vertical") + transform.up * Input.GetAxis("Depth")) * movementSpeed;
qui devrait être genre :

Code : Tout sélectionner

transform.position += new Vector3(Input.GetAxis("Horizontal") * movementSpeed, Input.GetAxis("Vertical") * movementSpeed, Input.GetAxis("Depth") * movementSpeed);
Si non, afin de vérifier dans la console si le player est bien "repoussé", tu peux essayer de rajouter ça sur le controller_fly :

Code : Tout sélectionner

    void OnCollisionEnter(Collision collision)
    {
	Debug.Log(collision.gameObject.name);
    }
si rien ne s'affiche dans la console, c'est clairement un problème de controller... tu peux essayer de rajouter :

Code : Tout sélectionner

    void Update()
    {
	Debug.Log(GetComponent<Rigidbody>().velocity);
    }
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Nattahnam
Messages : 18
Inscription : 31 Mars 2017 16:26

Re: [HELP] Comment switcher le mode déplacement ?

Message par Nattahnam » 30 Août 2017 15:49

Hello !

Après moult recherche, j'ai la moitié de mon problème résolu !

Je peux switcher le mode de contrôle dans un sens, mais pas dans l'autre !

J'ai fais un système a deux joueur : Lorsque le jeu démarre, player1 est activer et player2 est désactiver. Lorsque je rentre dans un trigger, player1 est désactiver et player2 est activé.

Le probléme, c'est que je n'arrive pas a revenir a la condition de base (player1 activer / player2 désactiver)




DISABLEPLAYER1

Code : Tout sélectionner

 
#pragma strict


var Obj : GameObject;

function Start () {



}

function OnTriggerEnter (trigger:Collider) { if(trigger.GetComponent.<Collider>().tag=="Player1") Obj.SetActive (false); 


  DontDestroyOnLoad (gameObject);
}
 

ENABLEPLAYER2

Code : Tout sélectionner

 
#pragma strict

var Obj : GameObject;

function Start () {

Obj.SetActive(false);

}

function OnTriggerEnter (trigger:Collider) { if(trigger.GetComponent.<Collider>().tag=="Player2") Obj.SetActive (true); 


  DontDestroyOnLoad (gameObject);
}

Une idée pour inverser cela ?
Dernière édition par Nattahnam le 30 Août 2017 17:22, édité 1 fois.

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

Re: [HELP] Comment switcher le mode déplacement ?

Message par boubouk50 » 30 Août 2017 16:14

Je ne suis pas bien sur que tu aies compris le fonctionnement des triggers.
La fonction OnTriggerEnter () est appelé à chaque fois que le GameObject qui possède le script entre dans un Trigger.
Donc si tu veux switcher entre les deux, il te faut simplement activer l'autre et désactiver lui-même. Ce sera donc le même script pour les 2, il ne faut pas séparer en Activation ou désactivation.

Par contre, je n'ai pas saisi la condition: if (trigger.GetComponent.<Collider>().tag=="Player1") présente dans les 2 scripts.
A quoi sont appliqués ces scripts?
Si Player1 est désactivé, tu ne pourras pas le toucher donc activer son Collider donc vérifier cette condition. Et quand bien même, ça n'a pas de sens si Player1 se touche lui-même...
"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

Nattahnam
Messages : 18
Inscription : 31 Mars 2017 16:26

Re: [HELP] Comment switcher le mode déplacement ?

Message par Nattahnam » 30 Août 2017 17:15

Les codes s'appliques sur des GameObject, pas sur Player1 / Player2.

Comment faire pour réunir les deux codes en un ?

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: [HELP] Comment switcher le mode déplacement ?

Message par ZJP » 30 Août 2017 18:21

boubouk50 a écrit :
30 Août 2017 16:14
...Si Player1 est désactivé, tu ne pourras pas le toucher donc activer son Collider donc vérifier cette condition. Et quand bien même ( :mrgreen: ) , ça n'a pas de sens si Player1 se touche lui-même...
Les Onxxx fonctionnent même avec un GO déactivé (comme tu le soupçonnais). Cela permet justement de ré-activer un GO en "sommeil".
Ces "trucs" peuvent être bénéfique, mais peuvent aussi (souvent?!) plomber les performances d'un projet vu que TOUT les GOs qui en comporte (actif ou pas) sont dans la boucle de "scrutation" d'Unity. :?

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

Re: [HELP] Comment switcher le mode déplacement ?

Message par boubouk50 » 30 Août 2017 18:38

Ce sont les triggers qui envoient l'info de contact?
Tu as un trigger pour activer et l'autre pour désactiver?

Ce devrait être les persos qui doivent avoir ce code, ainsi si le trigger touché est le bon switch, hop tu bascules. Et le comme le joueur 2 bascule sur le joueur 1 (et inversement) tu n'as pas à t'embêter à savoir qui est actif ou non.

Brrr, du JS:
A mettre sur chacun de tes persos.

Code : Tout sélectionner

 
#pragma strict

function Start () {
	//Si tu dois garder ton personnage entre les niveaux mieux vaut le faire au Start ()
	DontDestroyOnLoad (gameObject);
	//Dois-tu désactiver le joueur 2 par code obligatoirement? Tu peux le mettre inactif dans la scène
	//Si par code alors
	gameObject.SetActive (gameObject.name.localeCompare("METTRE LE NOM DU JOUEUR1 ICI"));
	//Cela activera le joueur1 et désactivera le joueur2 (sauf s'ils ont le même nom...)
}

function OnTriggerEnter (trigger:Collider) {
	//Si le trigger est bien du type à switcher de perso alors on switche
	if (trigger.tag.localeCompare("NOM DU TAG DES TRIGGERS DE SWITCH")) {
		//Changer son activité revient à désactiver l'un et activer l'autre puisque chacun s'auto-gère
		gameObject.SetActive (!gameObject.activeSelf);
	}
}
"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

Verrouillé

Revenir vers « (Js) Javascript »