Alors, j'ai dans mon jeu des objets portail, qui au contact du joueur, le téléporte à une destination indiqué.
Mon but est que toute les trois secondes, ces portails deviennent des méchants portails (noter l'imagination de mes noms) qui téléportent le joueur à une autre position, la case départ souvent, et au passage change de forme, histoire de montrer qu'ils sont méchant.
Voici le script que j'ai rédigé (avec de l'aide) à cet effet (je l'explique juste après):
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teleporteur_2 : MonoBehaviour {
public Transform Other;
public Transform A_Other;
bool transformation = false;
public Sprite mimic;
public Sprite normale;
SpriteRenderer spriterenderer_mimic;
SpriteRenderer spriterenderer_normale;
float timer_mimic = 0;
float timer_normale = 0;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Player")
if (transformation == false)
{
collision.transform.position = Other.position;
}
if (collision.gameObject.tag == "Player")
if (transformation == true)
{
collision.transform.position = A_Other.position;
}
}
// Use this for initialization
void Start () {
spriterenderer_mimic = GetComponent<SpriteRenderer>();
spriterenderer_normale = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update () {
if (transformation == true)
{ spriterenderer_mimic.sprite = mimic; }
if (transformation == false)
{ timer_mimic += Time.deltaTime; }
if (transformation == true)
{ timer_normale += Time.deltaTime; }
if (timer_mimic == 3)
{
transformation = true;
timer_mimic = 0;
}
if (timer_normale == 3)
{
transformation = false;
timer_normale = 0;
spriterenderer_normale.sprite = normale;
}
}
}
Là où ça coince c'est que j'ai voulut mettre un timer pour réguler le changement d'état (avant il était aléatoire). Donc nous avons une fonction float "timer_mimic" qui, une fois arrivé à 3, est sensé faire passer "transformation" à true. Au passage "timer_mimic" repasse à 0.
Une fois "transformatino" en true, s'active un second timer "timer_normale" qui au bout de trois seconde est sensé refaire passer "transformation" en false. Et là "timer_normale" repasse à 0, tandis que le compte de "timer_mimic" reprend, assurant en théorie un changement infinie toute les trois secondes. En théorie.
Sauf qu'en pratique, ça ne marche pas. Quand je lance le jeu rien ne change, les portails restent à leur état de base. "transformation" reste en false.
Visual studio n'affiche aucun ligne rouge, pour moi le code devrait fonctionner mais...non. J'ai dû me planter quelque part.
Est-ce que quelqu'un pourrait donc me dire où j'ai fais une erreur s'il vous plait? Ce serait vraiment très sympa.
Merci d'avoir lu ce message jusque au bout, et bonne journée à vous.