Transformer un personnage en objet

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
PinGroLeon
Messages : 3
Inscription : 21 Avr 2022 11:33

Transformer un personnage en objet

Message par PinGroLeon » 21 Avr 2022 11:47

Bonjour ! J'essaie de créer un jeu sous unity et j'aimerai implémenter une mécanique qui permet à mon perso principale de se transformer en petit objet. J'ai le sprit de l'objet mais je ne sais pas comment coder en csharp de fait de se "transformer" : Est ce qu'il faut changer le sprite ou c'est un un échange de place parent/enfant ?
Je suis un peu paumé donc toute aide est la bienvenue !

Merci d'avance

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Transformer un personnage en objet

Message par jmhoubre » 21 Avr 2022 11:58

Salut,

une manière qui me semble simple est de faire de ton objet un enfant du personnage, et par exemple dans le script du controller du personnage, ajoutez une fonction que désactive le renderer du personnage et son collider, bloque son mouvement, et active l'objet et son collider.

PinGroLeon
Messages : 3
Inscription : 21 Avr 2022 11:33

Re: Transformer un personnage en objet

Message par PinGroLeon » 21 Avr 2022 12:05

Ok je vois, c'est ce que je m'étais dis aussi.
Est ce que tu as une idée de comment cela rendrai en csharp ?
Je suis débutant mais je sait faire un if input getbuttondown cependant je n'arrive pas à savoir quoi mettre dans le if pour faire disparaitre le collider et changer le rigidbody de mon perso ainsi que faire apparaitre celui de mon objet :(

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Transformer un personnage en objet

Message par jmhoubre » 21 Avr 2022 14:20

En admettant que ton personnage ait la structure suivante, et que le jeu soit en 2D :

Code : Tout sélectionner

Player (avec un renderer)
	SpriteObject
Voici la trame d'un script à ajouter au Player pour passer de l'un à l'autre.

Code : Tout sélectionner

using UnityEngine;

public class SwitchPlayer : MonoBehaviour
{
    private Renderer playerRenderer;
    private GameObject child;
	private Renderer childRenderer;

	private void Awake ()
	{
		// Récupère les objets et components.
		child = GameObject.Find ("SpriteObject");
		childRenderer = child.GetComponent<Renderer> ();
		childRenderer.enabled = false;
		playerRenderer = GetComponent<Renderer> ();
	}

	private void Update ()
	{
		// Barre d'espace pour changer d'objet.
		if (Input.GetKeyDown (KeyCode.Space))
		{
			childRenderer.enabled = !childRenderer.enabled;
			playerRenderer.enabled = !playerRenderer.enabled;
		}
	}
}

PinGroLeon
Messages : 3
Inscription : 21 Avr 2022 11:33

Re: Transformer un personnage en objet

Message par PinGroLeon » 21 Avr 2022 15:30

Merci beaucoup !

Répondre

Revenir vers « Unity le logiciel »