Two questions

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
One, to achieve a proper attack detection I need to detect units within a cone, at melee range, and get the closest 'passed' unit. But, I've not used angles within GUI, so it confuses me to no end.

Two, is animations. I'm currently using a system to move a unit based on key presses, but it has every possible direction to move due to how I coded it and all, but the problem is the animation. If I move my Dark Templar, his animation will be paused for a second when he finishes moving. How do I fix this.
 

Dave312

Censored for your safe viewing
Reaction score
269
1) I recommend that you do it as a function. To get a cone, get units in raduis then check for the closest within the facing angle of the target unit. See below.

Trigger:
  • ClosetUnitInCone
    • Options: Function
    • Return Type: Unit
    • Parameters
      • TargetUnit = No Unit <Unit>
      • AttackRadius = 1.0 <Real>
      • AttackField = 45.0 <Real>
    • Grammar Text: ClosetUnitInCone(TargetUnit, AttackRadius, AttackField)
    • Hint Text: (None)
    • Custom Script Code
    • Local Variables
      • unit = No Unit <Unit>
      • minDistance = AttackRadius <Real>
      • Distance = 0.0 <Real>
      • AttackRegion = (Region((Point((X of (Position of TargetUnit)), (Y of (Position of TargetUnit)))), AttackRadius)) <Region>
      • unitGroup = (Any units in AttackRegion owned by player Any Player matching Excluded: Missile, Dead, Hidden, with at most Any Amount) <Unit Group>
      • minAngle = ((Facing of TargetUnit) - (AttackField / 2.0)) <Real>
      • maxAngle = ((Facing of TargetUnit) + (AttackField / 2.0)) <Real>
      • angle = 0.0 <Real>
    • Actions
      • Unit Group - Pick each unit in unitGroup and do (Actions)
        • Actions
          • Variable - Set angle = (Angle from (Position of TargetUnit) to (Position of (Picked unit)))
          • General - If (Conditions) then do (Actions) else do (Actions)
            • If
              • minAngle <= angle <= maxAngle
            • Then
              • Variable - Set Distance = (Distance between (Position of TargetUnit) and (Position of (Picked unit)))
              • General - If (Conditions) then do (Actions) else do (Actions)
                • If
                  • Distance <= minDistance
                • Then
                  • ------- Picked Unit is closer
                  • Variable - Set unit = (Picked unit)
                  • Variable - Set minDistance = Distance
                • Else
            • Else
      • General - Return unit


Let me know if I need to explain it. When you call the function, you just need to specify the unit and the size of the cone (angle and radius). Hope that helps.
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
I knew the math for it and all, but what I lacked was formatting, as I'm terrible with GUI, and as Galaxy is not yet fully usable, it was annoying... Thanks for helping.
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
Bump, still need an answer to 2...
 

Builder Bob

Live free or don't
Reaction score
249
I cannot think of an answer to question two without knowing more. I'm moving my units with a system using instant move, and I change the animations of the units manually whenever I need to change them. I have seen no issues with units' animations stopping when I don't want them to, so I don't think it's a universal problem.

With stopping to move for 1 second, does that mean freeze in place? Maybe you could loop the animation to remove that behavior. Or maybe set the animation to stand when you detect the movement has stopped so it doesn't freeze.
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
Well I tried your second thing a long time ago, like the instant I saw it happen, but nothing changed. Also, I use a "increase interval movement by so many units while value is such and such" system. That way, I get whatever direction I want, while having realistic effects. I can't use the actual instant moving however, because it looks unrealistic with how I do my system...

I'm actually ordering the unit to move, so yea.
 

Builder Bob

Live free or don't
Reaction score
249
Also, I use a "increase interval movement by so many units while value is such and such" system.
what does increase interval movement mean?

Anyway, if you're ordering the units, maybe you could sort it out in the Data Editor. If you've already tried messing with the animation values for the unit's actor, you could also as a last resort try removing the baseline for stand and walk altogether so it doesn't change animation on it's own. Then you have complete control of the animations by triggers.
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
Well, I think I probably know the issue? Well, the unit is ordered to move, by a consistent interval, according to an offset set by another custom value, supplied by pressing a key down. It will either add or subtract, depending on the key pressed.

What I'm thinking is, the value isn't equaling one automatically like it should, so the animation continues playing... I'll test it out later on.
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
Well, I was right. It's taking about a second to equal zero after releasing the keys...
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top