About creating continuous attacks

I am currently working on creating a combo attack sequence for the player character but have encountered an issue.

My concept is similar to a certain Bellsc-like system where repeatedly pressing the attack button changes the move upon a successful hit. However, my ideal implementation is more akin to a fighting game where moves are linked via cancellations.

In VS, when an attack hits an enemy, I am performing a conditional branch on the player side. However, it inevitably transitions to the “Idle” state branch instead of moving to the next attack animation. What link settings should I use to ensure it branches to the next attack?

Furthermore, even with this branching, I want to achieve a fighting-game-style cancellation effect. Specifically, the moment the attack button is pressed during hit stop, I want to skip the return-to-idle animation (which exists for each attack) and transition directly to the state that outputs the next attack hitbox.

Currently, for the condition to return to idle, I am attempting to transition based on “Input Conditions” where the attack button is “Released” and “Animation Finished.”

Additionally, in the future, I want to add further branches from any move to transition into dashes or special moves. How should I differentiate the conditions for States and Links to ensure smooth branching?

Thank you for your assistance.

Could you show me the link content from G_attack1(2) to G_attack2?
(It seems the conditions to go to standby have already been met.)

If you would like to see the conditions for both,
you might be able to transition by increasing the priority.

Thank you for viewing. The priority for the attacking side is set to zero for all, and the state for returning to standby is set to one for all.

Thank you for your support.

First, let’s check if a simple transition is possible.

Conditions for G_attack1(2)

  • Change priority to 1 (increase from standby)

Conditions for returning to standby

  • Restrict to “after animation completes” (temporarily remove “attack contact ≠”)
  • Change priority to 0

In the above case, is the transition correct?

As a next step, although I haven’t reviewed the project, here is my prediction:

Suspected Cause ①
The G_attack1 animation plays too quickly, causing a return to standby before the attack button is pressed.
Check method:
Extend the G_attack1 animation to about 5 seconds, then press the next attack button with ample time.

Suspected Cause ②
The attack hitbox is not making contact with the enemy, so the condition is not met.
Check method:
Verify the enemy’s hitbox and your own attack hitbox.

Suspected Cause ③
Both “object hitbox contact” and “moment the button is pressed” are instantaneous, making the transition condition too strict.
Check method:
Change the condition to “attack button is being held.”

Could you please check these points?

Thank you. I have attempted the following changes and the first hypothesis for the cause:

Conditions for G_attack1(2):

  • Changed Priority to 1.

Conditions for Idle:

  • Temporarily removed the condition “Attack Contact ≠”.
  • Changed Priority to 0.

Hypothesis for Cause ①:
The animation for G_attack1 plays too quickly, causing the character to return to Idle before the attack button is pressed.
※How to check:
Extend the G_attack1 animation to about 5 seconds, then press the next attack button with plenty of time to spare.
(I changed it to 1 second because checking with 5 seconds is quite tedious.)

As a result, the attack technique was executed to the end and all hits connected. However, after several tests, unintended behavior occurred.

G_attack1, which should appear twice, appeared only once. It seemed as if the second attack state was ignored, and the third attack state was executed, followed by the fourth attack state.

In this state, due to the current speed of the first-hit animation, it became easy to trigger the sequence of “first hit → third hit” twice. When this happened, the enemy entered a damage state but would not recover from the damage vibration animation.

If left alone for a while, the enemy would fall down, get up, and then return to Idle, following the states as intended.

Could the fact that G_attack1(2) is not appearing twice be due to the reuse of the G_attack1 animation?

Regarding the enemy’s damage being fixed, I have not made any changes since Moonling-san taught me the method regarding hit stop the other day.

Should I send you the project files?

Thank you very much.

If you could lend us the project, we would like to verify it.
Could you please share it at an appropriate time and in a suitable manner?

pgmmv-support@gotchagotcha.jp

I was recently instructed to send the project to this address. For this occasion, is it acceptable to send the ZIP file here as well?

1 Like

I see. If there are specific instructions, please send them to that address, and we will retrieve them.
Thank you for your cooperation.

Understood.

We have sent the ZIP file to pgmmv-support@gotchagotcha.jp.

Please review it at your convenience.

1 Like

※Regarding this issue, there is a possibility of a bug, and we have reported it to the engineering team.

■Symptoms
It appears that even if the transition condition is met during animation playback,
if the animation of the destination node is the same as that of the original node, the transition cannot occur until the animation playback is finished.

In the case of ① Punch → ② Punch → ③ Straight → ④ Somersault,
it seems the condition can be met by setting ① and ② to use different animations (by copying and treating them as separate entities).

We apologize for the inconvenience,
but could you please test this while using the above workaround for now?

Thank you for your reply.

Regarding ① and ②, set them to use different animations (by copying and treating them as separate entities).

We implemented this, but the result was ① Punch, ③ Straight, and ④ Somersault; ② still did not appear.

For your reference, here are the steps we took:

  • In AnimationPlayer, duplicated G_attack1 and renamed it to 08_G_attack1_(2).
  • In the player_2 GameObject, performed “Batch Animation Load”.
  • Changed the “Animation Category” of state G_attack1(2) to 08_G_attack1_(2).
    → Test play (no change from the previous situation).

We proceeded with the fix following this workflow.

As a precaution, we have sent the project file with the implemented changes to pgmmv-support@gotchagotcha.jp.

Please review it at your convenience.

Hello Hiro_T,

We were contacted regarding the project corresponding to the support email, but it has not been received yet.

Could you please resend it at your convenience?

Apologies. It seems I sent the message before the ZIP file finished loading.

I have resent it.

Please review it at your convenience.

Data confirmed.
This may be due to the input frame specifications.
*Note: The input frames for action ③ are long, making it appear as if the button press timing from the jab in action ② is being satisfied.

■ Adjustment Proposal
This condition is specified in G_attack1(2).
Please try changing the input frame count from [4] to [1].


Thank you.

After setting the input reception frame for the adjustment proposal to 1, the jab now triggers twice.

This may lead to the next issue, but currently, if you stop pressing the button at the moment of the jab attack in the same project file, both the player and the enemy remain frozen for a while. Although both of the player’s jab attack animations are 1 second long, the freeze lasts longer than that. The third hit, the straight, did not cause any issues.

Regarding the initial issue where only certain enemies get stuck in the vibration animation, it seems to occur more frequently when the third straight hit lands just barely on an enemy positioned with their back against a wall tile. It might be a different situation altogether, but that is the current observation.

I apologize for listing multiple issues at once.

Thank you for your assistance.

1 Like

What happens if you remove TakenDamageSettings from enm_ax_2 and player_2?

If time stops other than during animation playback, I suspect it might be hit stop or time manipulation via actions.

Since StateDebugger is implemented, you can place it in the scene and specify “enm_ax2” as the target to see what state the enemy is in.

Looking at this, it appears that while the player’s attack hitbox is active, the enemy is rapidly transitioning between “damage combo” and “damage”.

Therefore, please try adjusting by:

  • Setting an invincibility period for the enemy
  • Turning ON the “Attack only once” option for the player’s AttackArea2D

Thank you. The issue where damage was fixed was caused by the lack of a link transitioning from “damage consecutive” to “knockback”. Currently, regardless of how you attack, it now transitions to down.

I apologize for the basic oversight. :man_bowing:

1 Like

There is a new issue: I want each attack to hit only once, so I added a keyframe in AnimationPlayer to turn ON “Attack Only Once” in “player’s AttackArea2D”, but this has caused the hit stop effect in TakenDamageSettings to disappear.

Is there a way to use them together?

We have also observed similar behavior in one of our existing projects.
We will investigate this matter.

We will contact you as soon as we determine whether the issue is resolved by adjusting the values or if it is a bug.