collinhover/impactplusplus

No dynamic animations on entities that are using the shoot ability

Closed this issue · 4 comments

Hi @collinhover,

I have an entity with canFlipX: false and canFlipY: false. That entity uses the shoot ability ig.AbilityShoot for shooting projectiles. I noticed that the shootUp, shootDown and shootLeft animations won't show up. Only the shootRight animation gets triggered, no matter in which direction I move the entity.

If I add a check at this line:

https://github.com/collinhover/impactplusplus/blob/master/lib/plusplus/abilities/ability-shoot.js#L372

javascript
if( this.entity.canFlipX && this.entity.canFlipX ){

this.entity.lookAt(projectile);

}


It fixes the issue and everything works as expected. Not sure though if that is the best solution. Maybe we should add a check based on the `faceTarget` property of the ability class as seen here:

https://github.com/collinhover/impactplusplus/blob/master/lib/plusplus/abilities/ability.js#L630

What do you think about this behavior?

Sorry for the delay, been super busy this week. Can you explain why your fix double checks for canFlipX? I think the lookAt method already checks that... I'm not sure why it is not working. However, I think you are right that we maybe should check for the faceTarget property before calling the lookAt method. Is your setup using sidescrolling or top-down mode?

The double check is of course nonsense! This was a typo, sorry!

The game is in top-down mode. I am not sure about the check of canFlipX at the lookAt method. There are only two parts that mention the canFlipX property at that method:

https://github.com/collinhover/impactplusplus/blob/master/lib/plusplus/core/entity.js#L3990
https://github.com/collinhover/impactplusplus/blob/master/lib/plusplus/core/entity.js#L4032

This will only change the flip of the entity, right? The entity class is quite big, so i am unsure what other consequences the change of the flip property has at that point.

Adding a check for the faceTarget property at the ability.js fixes the problem in my case. However, I have to mention that my game may be a special case. Because it's following shoot em up conventions, the player is always facing right and is always moving right (boss fights excluded).

I could also provide a demo if that helps. If you think a check for the faceTarget property is a good idea, I could send you a pull request. What is easier for you? Adding the check for yourself, or merging in a pull request?

Off topic: I am using particles a lot in my game right now for effects and explosions. The particle classes are awesome and highly useful. Thanks for that!

Adding a check for faceTarget seems like a good idea. No need for a demo, but would you mind making a pull request?

On the original problem, it is strange and I will try to look into it. I'm glad the particle class is working for you :-)

@collinhover I will close this issue since the fix was merged in. I can reopen this issue, if you need it as reminder for the original problem. But as far as I am concerned everything works fine right now.