En août 2016, j'avais publié un sujet nommé "Comment utiliser les toggle (case à cocher) ?"
Voici le lien :
viewtopic.php?f=9&t=12951
Mon toggle se comportait comme un bouton. Sur la forme, mon problème a été résolu car mon toggle se comporte comme un toggle. Ayant d'autres obligations et pensant que tout fonctionnait bien, je ne me suis plus occupé de ce programme. Mais en le reprenant, hier, je me suis aperçu qu'il y avait quelque chose de non résolu dans mon programme concernant ce fameux toggle.
Pour rappel, je suis entrain d'élaborer un "Space Invader Like" et mon toggle dois servir à activer ou désactiver le tire automatique de mon vaisseau voici les parties concernées de mon programme :
Les commandes du vaisseau :
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
[System.Serializable]
public class Done_Boundary
{
public float xMin, xMax, zMin, zMax;
}
public class Done_PlayerController : MonoBehaviour
{
public float speed;
public float tilt;
public Done_Boundary boundary;
public GameObject shot;
public Transform shotSpawn;
public float fireRate;
public int vie;
public static bool t = false;
private float nextFire;
/*public float horizontalSpeed = 2.0F;
public float verticalSpeed = 2.0F;*/
void Update ()
{
if (Time.timeScale == 1)
{
if (((Input.GetButton("Fire1") || Input.GetKeyDown(KeyCode.Space) || t == true) && Time.time > nextFire))
{
nextFire = Time.time + fireRate;
Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
GetComponent<AudioSource>().Play();
}
}
}
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
GetComponent<Rigidbody>().velocity = movement * speed;
GetComponent<Rigidbody>().position = new Vector3
(
Mathf.Clamp (GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax),
0.0f,
Mathf.Clamp (GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax)
);
GetComponent<Rigidbody>().rotation = Quaternion.Euler (0.0f, 0.0f, GetComponent<Rigidbody>().velocity.x * -tilt);
}
}
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
public class Done_coche : MonoBehaviour
{
public void tire(bool bt_value)
{
Done_PlayerController.t = bt_value;
}
}
(Cette case apparait quand je met la fonction gérant le toggle dans le "On Value Change (Boolean)" je pense quelle doit gérer la variable booléen "bt_value". )
Si cette case du "On Value Change (Boolean)" est coché le tire automatique s'active dès lors que je coche ou décoche mon toggle et je ne peux plus désactiver le tire automatique. J'aimerais que quand je coche mon toggle le tire automatique s'active et qu'il se désactive quand mon toggle est décoché.
Pourriez-vous m'aidez à trouver une solution ?
Merci d'avance.
Très bonne soirée à tous et à toutes.
Bien cordialement,
aclanto