0

J'écris un jeu pour Mac OS dans Swift 3 avec SpriteKit et GameplayKit. J'ai déjà créé une méthode pour capturer des événements de presse au clavier et peut contrôler mon personnage sur la carte. Sprite se déplace en utilisant MovementComponent qui applique une action de mouvement sur chaque mise à jour si un événement de clavier est enregistré. Cependant, il y a un retard dans le mouvement des caractères juste après la première pression sur la touche. Au moment où j'appuie sur une touche fléchée et maintenez-la enfoncée, mon personnage bouge pendant la durée de l'action standard, mais il y a un délai avant de continuer à bouger car il y a environ 0,5 retard avant que le clavier recommence. Ma question est: comment puis-je changer le taux de répétition du clavier ou supprimer ce délai pendant que mon jeu est en cours ou y a-t-il une meilleure façon de mettre en œuvre un mouvement continu contrôlé par clavier dans un jeu mac?Comment changer le taux de répétition du clavier dans une partie?

Merci d'avance.

+1

Qu'est-ce que "Swift 3" a à voir avec les événements de clavier dans votre jeu? Il est déjà clairement indiqué par les balises que vous utilisez Swift, mais il s'agit d'une question d'utilisation du framework. –

+0

Le taux de répétition est généralement défini dans un système d'exploitation, je ne suis pas sûr de toute application qui change cela. Je surveillais les événements key down et key up, et j'utilise simplement quelque chose comme 'NSTimer' si vous avez besoin d'interroger en dehors de votre kit, ou utilisez la méthode de mise à jour si nécessaire dans le Sprite Kit pour vérifier l'état de la clé (Haut/bas) et gérer en conséquence – Knight0fDragon

+0

Merci pour vos commentaires. Je suis nouveau à ceci et ne peut pas être très pointu dans la terminologie. Je vais essayer des solutions suggérées. –

Répondre

0

C'est peut-être mieux pensé en termes de pseudo-code. De cette manière, vous pouvez être indépendant de l'interrogation du système et du rapport d'une pression sur une touche maintenue enfoncée.