[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
Nattahnam
Messages : 18
Inscription : 31 Mars 2017 16:26

[RESOLU] Comment switcher le mode déplacement ?

Message par Nattahnam » 16 Août 2017 14:52

Salut a tous !

Je suis nouveau sur unity, et pour les besoins d'un projet scolaire, j'ai besoin de votre aide en code !

Voila, j'ai un controller a la 1ere personne (Prefab de base de Unity), et un controller "aérien" (le personnage est sensé voler) toujours a la 1ere personne.
Mon problème, c'est que j'ignore comment opérer la transition entre les deux mode de déplacement. Celle ci doit survenir lorsque le joueur rentre en contact avec un ennemie. (Contrôle Normal > collision avec un ennemie > Contrôle Aérien )

De même, si le joueur rentre en collision avec un objet précis, il reprend le mode de déplacement normal.

Je suis débutant en code, et toute aide serait bienvenue !
J'espère que ma description est clair ^^

Merci de vos retour ! :)
 ! Message de : boubouk50
SUJET DEPLACE: Si code alors section Code

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

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

Message par Greg » 16 Août 2017 17:11

Hello :merci:

Code : Tout sélectionner

    using UnityEngine;

    public class ExampleClass : MonoBehaviour
    {

    public GameObject player;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "Enemy")
        {
            Destroy(player.GetComponent<playerController1>());
            player.AddComponent<playerController2>();
        }
        else if (collision.gameObject.tag == "Wall")
        {
            Destroy(player.GetComponent<playerController2>());
            player.AddComponent<playerController1>();
        }
    }
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 » 16 Août 2017 17:18

Merci pour ta réponse, je test ca ! :)

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

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

Message par Nattahnam » 17 Août 2017 13:54

J'ai testé, en vain, d'appliquer ton code !
Peut tu me l'expliquer ?

Petite précision: Mes scripts "First Person Controller" et "Camera Controller_fly" sont sur le FPSController. Est ce une erreur ? Comment dois-je mis prendre ?

Merci de ton aide en tout cas ! :)

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

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

Message par Greg » 17 Août 2017 14:35

désolé... je code en mode machine depuis 2 jours et je manque sans doute de clarté ^^

je retente et du coup... ce script est à mettre sur l'objet avec le collider du player...

Code : Tout sélectionner

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
// Assign FPSController object in the editor.
public GameObject FPSController;

// When this object enter in collision.
void OnCollisionEnter(Collision collision)
{
// Check if the tag of collided object is 'Enemy'.
if (collision.gameObject.tag == "Enemy")
{
// Destroy FirstPersonController script and add CameraController_fly script on FPSController object.
Destroy(FPSController.GetComponent<FirstPersonController>());
FPSController.AddComponent<CameraController_fly>();
}
// Check if the tag of collided object is 'Wall'.
else if (collision.gameObject.tag == "Wall")
{
// Destroy CameraController_fly script and add FirstPersonController script on FPSController object.
Destroy(FPSController.GetComponent<CameraController_fly>());
FPSController.AddComponent<FirstPersonController>();
}
} 

j'espère ça va aller,moi j'vais m'pieuter! ^^

:merci:
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 » 17 Août 2017 15:12

Merci pour ta rapidité !

Le code semble impeccable (merci pour les commentaires, très utiles !)
Cependant cela ne fonctionne toujours pas...

Surement quelque chose que je fais mal !

Merci en tout cas ! :)


[EDIT]

Cela fonctionne ! Cependant, une fois que le player entre en collision avec l'Enemy, le player s'envole sans s'arrêter, impossible de le contrôler normalement !
Une idée ?

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

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

Message par boubouk50 » 17 Août 2017 16:40

Ton script (et donc Component) s'apelle bien CameraController_fly avec la même orthographe et majuscules?

Il s'envole sans s'arrêter, ça veut dire quoi exactement? Tu n'as pas les inputs?
"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 » 17 Août 2017 17:05

Oui c'est bien la même chose !

Le personnage se fait "repoussé" indéfiniment une fois qu'il rentre en collision avec l'objet "enemy". Je peux bouger, mais cela ne compense pas la force exercer de base par la collision..

Je sais que je ne suis pas clair, désolé je suis un nouveau sur Unity et j'essai de comprendre tout ca ^^

Les inputs ?


Voila mon script CameraController_fly


>>>>

Code : Tout sélectionner

using UnityEngine;

public class CameraController_fly : MonoBehaviour {

	private static float movementSpeed = 1.0f;

	void Update () {
		movementSpeed = Mathf.Max(movementSpeed += Input.GetAxis("Mouse ScrollWheel"), 0.0f);
		transform.position += (transform.right * Input.GetAxis("Horizontal") + transform.forward * Input.GetAxis("Vertical") + transform.up * Input.GetAxis("Depth")) * movementSpeed;
		transform.eulerAngles += new Vector3(-Input.GetAxis("Mouse Y"), Input.GetAxis("Mouse X"), Input.GetAxis("Rotation"));
	}
}
>>>>


Le script qui gère le "switch" entre les 2 modes de contrôle :

>>>>

Code : Tout sélectionner


using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;

public class Switch : MonoBehaviour
{
	// Assign FPSController object in the editor.
	public GameObject FPSController;

	// When this object enter in collision.
	void OnCollisionEnter(Collision collision)
	{
		// Check if the tag of collided object is 'Enemy'.
		if (collision.gameObject.tag == "Enemy")
		{
			// Destroy FirstPersonController script and add CameraController_fly script on FPSController object.
			Destroy(FPSController.GetComponent<FirstPersonController>());
			FPSController.AddComponent<CameraController_fly>();
		}
		// Check if the tag of collided object is 'Body'.
		else if (collision.gameObject.tag == "Body")
		{
			// Destroy CameraController_fly script and add FirstPersonController script on FPSController object.
			Destroy(FPSController.GetComponent<CameraController_fly>());
			FPSController.AddComponent<FirstPersonController>();
		}
	}
}

Encore merci de prendre du temps pour m'aider, je me doute que je ne suis pas une fléche en code ^^
Dernière édition par Nattahnam le 21 Août 2017 10:14, édité 1 fois.

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

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

Message par boubouk50 » 17 Août 2017 17:32

Est-ce que ta classe CameraController_fly est fonctionnelle? Je veux dire l'as-tu testée avant de faire le switch? Fonctionnait-elle correctement? -> Pour tester, remplace le FirstPersonController par ton CameraController_fly.
Il y a possibilité de conflit entre ce script (qui modifie la position) et le RigidBody (qui utilise les forces physiques). je veux juste m'assurer que le problème ne se situe pas avant le switch (qui à l'air bon).
"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 » 18 Août 2017 13:02

La CameraController_fly fonctionne correctement !

Verrouillé

Revenir vers « (Js) Javascript »