Je veux créer un jeu de montgolfière (compétition)
J’ai déjà créer la montgolfière et une windarea et cela fonctionne. Le ballon se déplace correctement.
J’aimerais juste que le ballon rallentisse quand il touche le sol (ou tout autre futur objet comme arbre ect…) mais je n’y arrive pas….
Voici mon code :
Code : Tout sélectionner
using UnityEngine;
public class myHotAirBalloon : MonoBehaviour
{
private Rigidbody rb;
private bool isGrounded = false;
private float originalDamping; // Pour stocker la valeur de damping d'origine
void Start()
{
rb = GetComponent<Rigidbody>();
rb.useGravity = false; // La gravité ne doit pas affecter la montgolfière directement
originalDamping = rb.linearDamping; // Sauvegarde de la valeur de damping d'origine
}
void Update()
{
if (isGrounded)
{
// Réduire la vitesse lorsque le ballon est au sol
rb.linearVelocity /= 3f; // Diviser la vitesse par 3 pour simuler un ralentissement
}
}
private void OnTriggerStay(Collider other)
{
if (other.CompareTag("WindArea"))
{
WindArea windArea = other.GetComponent<WindArea>();
if (windArea != null)
{
// Applique la force de levage
rb.AddForce(Vector3.up * windArea.strength, ForceMode.Acceleration);
// Appliquer une force horizontale dans la direction du vent
rb.AddForce(windArea.direction.normalized * windArea.strength, ForceMode.Acceleration);
}
}
}
private void OnCollisionEnter(Collision collision)
{
// Vérifie si le collisionneur est un Rigidbody
if (collision.rigidbody != null)
{
isGrounded = true; // On considère que le ballon touche un autre Rigidbody
rb.linearDamping = 200f; // Appliquer 200 de damping au Rigidbody
}
}
private void OnCollisionExit(Collision collision)
{
// Vérifie si le collisionneur est un Rigidbody
if (collision.rigidbody != null)
{
isGrounded = false; // Quitte le contact avec le Rigidbody
rb.linearDamping = originalDamping; // Rétablir le damping d'origine
}
}
}
si vous pouvez m’aider. Merci par avance