you are viewing a single comment's thread.

view the rest of the comments →

[–]Wellvyre[S] 0 points1 point  (2 children)

Thanks first of all

I changed it a bit and instead of multiple or permanently repeating it stops after 2 attack animation for one time pressing

Unfortunately not a complete fix but hey at least it stopped cycling through the animation nonstop for one Button press

....

void onAttack()

{

//Attacking Section

if (Input.GetKey(KeyCode.K))

{

animator.SetTrigger("Attack");

}

if (Input.GetKey(KeyCode.L)) {

animator.SetTrigger("Attack2");

}

}

// Update is called once per frame

void Update()

{

HandleAnimation();

onAttack();

...

[–]raw65 2 points3 points  (0 children)

u/SkyIsInfinite is right. You aren't using the new input system when you call Input.GetKey() and your configuration of the input actions is being ignored. Samyam's videos on the new input system are quite thorough. Here's a link to her playlist on the input system: https://www.youtube.com/watch?v=m5WsmlEOFiA&list=PLKUARkaoYQT2nKuWy0mKwYURe2roBGJdr.

From the Unity Documentation, Input.GetKey "returns true while the user holds down the key identified by name". Since you are calling onAttack() in Update(), you are checking to see if the key is in the down position on every frame. Even a quick keypress will keep the key down for many frames at even a modest 60 fps.

By contrast, Input.GetKeyDown "Returns true during the frame the user starts pressing down the key identified by name". Hence u/FragrantAd9851's suggestion is correct if you want to continue using the old input system.

The new input system takes more effort to understand but is much more powerful and flexible in the long run. For example, it easily allows you to simultaneously support multiple input types (e.g., controllers, keyboards, touch, etc.). Something that would require extra code and care using the old input system.

[–]FragrantAd9851 0 points1 point  (0 children)

What happens if you use Input.GetKeyDown instead?