J'ai créé un script pour faire sauter mon personnage, mais il continue de sauter lorsque je continue à appuyer sur le bouton. Je veux juste que cela saute une fois une fois.
4 Réponses :
Ajouter un état ou signalez le stockage de l'état de saut, lorsque vous commencez à sauter, définissez-le pour être true.in Méthode de mise à jour, vérifiez le drapeau avant d'ajouter une force. Changez le drapeau pour être faux après le temps d'arrêt du froid p>
Gardez un booléen comme "Canjump" et réglez-le sur FALSE lorsque le joueur saute. Mais plutôt qu'une minuterie que quelqu'un a déjà suggéré, vous utiliseriez généralement une physique. Traycast pointant du joueur ou une autre détection de collision pour déterminer lorsque le joueur a frappé le sol et définir CANJump vers true quand cela se produit. Si vous utilisez un numéro pour Canjump plutôt qu'un BOOL, vous pouvez autoriser des sauts à double sauts. P>
Je recommanderais une méthode qui renvoie un booléen et vérifie si votre personnage est mis à la terre. Une telle méthode est implémentée dans l'unité intégrée intégrée Contrôleur de caractères . La mise en œuvre seul pourrait ressembler à ceci:
function IsGrounded(): boolean {
return Physics.CheckCapsule(collider.bounds.center,new Vector3(collider.bounds.center.x,
collider.bounds.min.y-offset,collider.bounds.center.z),radius);
}
Pour ajouter, créer des vecteurs, des collidènes et un booléen Il suffit d'ajouter des vecteurs pour vérifier où se trouve le lecteur et une collision pour vérifier si le joueur est sur le terrain et le bool qui détermine si Le saut est autorisé et mettez le bool avec INPUT.BETTYDOODDOWDOWN. Si BOOL est vrai et que vous appuyez sur la touche, puis sautez. P> p>
Définir un drapeau pour vérifier les heures de saut
@Timchang j'ai essayé mais ça ne marche pas pour moi: (((
Vous voulez dire, vous ne pouvez pas sauter à nouveau une fois que vous avez frappé le sol?
@Malphegal C'est ce que je veux, mais mon code est-il sautant sur l'air sans retourner au sol.
Duplicaté possible de gamedev.stackexchange.com/questions/113244/...
Stackoverflow.com/q/44296313/7111561