Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

How can I see if a Sweep touches another Sweep?

I'm working on a platformer fighting game that has similar mechanics to Super Smash Bros. (but make no mistake, this is no true copy) I know I can attach some capsule components to the blueprints of the fighters at their various bone sockets to essentially make simple hurtboxes. However, as far as actual hitboxes, I've found that SweepMultiByChannel using FCollisionShape::MakeSphere is the most flexible system for making pill-style hitboxes like in Smash (or really, almost all 2.5D fighters today). However, it's either missing a feature I need or I'm not seeing how to implement that feature. Right now, that line trace can only see existing collisions with actors. In Smash and actually even in many fighting games, hitboxes are able to "clash" with one another, or they touch with only the hitbox portion of the move, causing the attacks to be canceled out, or in other cases some attacks will cancel others out when clashed, so on and so forth. I want to be able to implement a similar mechanic, but I have no idea how to get Sweep traces to interact with each other without creating new actors to do so.

Is there a way to test between two capsule-style hitboxes without creating new hitbox-representing actors?

Product Version: UE 4.20
more ▼

asked Sep 03 '18 at 07:34 PM in C++ Programming

avatar image

6 1 2

(comments are locked)
10|2000 characters needed characters left

1 answer: sort voted first

Not sure if you can. +1 for the question.

I hope someone has better solution than mine:

The unreal engines uses Sub-stepping and they run multiple times per frame so you should get a decent result unless your actions are very, very quick.

In this case you can try to modify the physics engine settings to get better results, If that fails maybe forgo physics altogether... Street Fighter games (the 2D ones at least) do not have simulated physics and they feel great.

more ▼

answered Sep 03 '18 at 10:54 PM

avatar image

1.2k 6 5 9

avatar image Suppercut Sep 03 '18 at 11:16 PM

Yeah, substepping is mostly for physics objects. All I'm using is CharacterMovement, I don't think that's "simulated physics" last I checked? Oh well...

I think I'll bite the bullet and work on an actor system for hitboxes for now.

avatar image dZh0 Sep 04 '18 at 06:10 AM

Nope. CharacterMovementComponent does not rely on the physics engine but the sphere sweeps, ray casting and collisions are part of it so I assumed you are using simulated physics in the "clash" bit :)

You can probably implement this with sphere sweeps only interacting with the character colliders and still have hits canceling attacks.

avatar image Suppercut Sep 04 '18 at 11:22 PM

Really? I thought it was just doing a long-distance quick and dirty iterative sort of function with some math to narrow down possible points of contact in which it would actually try to look for a collision.

And in reality, I can't. Or, at least, not in the traditional fighting game / Smash Bros definition of those attacks. The whole idea of attacks that clash or cancel is that neither hitbox touches the players' actual hurtboxes, but the hitboxes touch each other. A cancelling attack is where the hitboxes touch, but one attack has a different priority, and the canceled attack whiffs but the canceling attack can hit in the following frames. Think this way: If I have two swordies, and they do a similar slash attack that extends a disjointed hitbox (their swords), they would realistically clang together, right? Well, in that case, neither hitbox would be hitting a character hurtbox. If two hitboxes hit two hurtboxes simultaneously, (like two brawlers, with their hitboxes being closer to their arm/leg hurtboxes) both fighters are affected by each others' hits (often nicknamed, in Smash Bros, a DBZ, especially when it results in knockout for both characters), though most likely one fighter's attack will probably land first (say, a jab beating out a straight).

...sorry for rambling... me and the team are huge FGC nerds... I'll be off... ^^;;

avatar image dZh0 Sep 05 '18 at 09:04 AM

Really? I thought it was just doing...

What are we you talking about here? I agreed that CharacterMovement is not run on the physics engine. (largely - there are some bits and parts that might run on it) Is this your take on how sphere sweeps operate?

The debate weather a hit can occur in the sweep area of the weapon (sword) or on character hitbox is pointless at best. This is your design and you should experiment with it. I just wanted to point out that the effect would be pretty much the same assuming the speed of the game is high and the attack range is relatively low.

This is my last piece of advice as I feel like this is turning into some kind of ego battle I don't want to be part of...

  1. Forgo the sphere sweeps;

  2. Attach inactive colliders around the characters each associated with an attack.

  3. The colliders must closely follow the geometry of the swiped arc of the attack;

  4. Separate those colliders in particular collision channel(s);

  5. On attack, activate the corresponding collider after the anticipation animation (if any);

  6. Check for overlap with whatever collision channel best fits the case (experiment with pawn or another attack);

  7. ... (hit logic with knock-back, graphic effects, hp and so on) ...

  8. Deactivate the collider at the end of the animation;

(comments are locked)
10|2000 characters needed characters left
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question