Arrow Key Movement

Stu-pac

New Member
Reaction score
0
Hi, I am working on a new game called speedboats. My goal is for the players to be able to move their boats with arrow keys unlike the normal warcraft mouse click movement. I have figured out how to use arrow key triggers so that the hero does move and the camera stays with the hero.
> My problem is that the trigger only functions when the player presses the key, but not when the player holds the key down. This means that the player has to spam a key in order for their boat to move fast...
... I have tried something like every 0.3 seconds of game time "check if player has keyboard button pressed" but i cant find any kind of condition that looks like that.
If anyone knows how to do this in JASS or any method please post your reply.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Check out the new amazing AOS - War of the Ages > http://www.thehelper.net/forums/showthread.php?t=124815
 

uberfoop

~=Admiral Stukov=~
Reaction score
177
Set variables to serve as the condition. Whenever the key is pressed, set a variable to a value. When the key is released, negate it.

Booleans could work well for this. When the key is pressed, set to 'true.' When the key is released, set to 'false.'
 

Danis[h]

New Member
Reaction score
19
Set variables to serve as the condition. Whenever the key is pressed, set a variable to a value. When the key is released, negate it.

Booleans could work well for this. When the key is pressed, set to 'true.' When the key is released, set to 'false.'

Which means you need two OR three triggers, depending on how you make it..

1 trigger with the event, arrow key is pressed which then changes the value of the boolean

another trigger for when the key is released, and a third trigger with the timed event of issuing the move order :)

You can also have 1 trigger for both releasing and pressing the arrow key, and then use an if/then/else condition to change the value of the boolean, dependant on what the value currently is.
 

Stu-pac

New Member
Reaction score
0
Thank you for your suggestions, I made the variables and triggers and it worked fine but I came across a problem.
When I first made the periodic triggers I had it so the boat was moved instantly every time interval. Then after testing the map everything worked but it looked kind of choppy the way the boat would skip around. So then I decided to change the periodic movement so the boat was ordered to move to the point. Now when I tested it the choppiness was gone but the left and right arrow keys do not work when the up arrow key is pressed.
Ill try to post trigger code to show. If you can figure out the problem please let me know. >Sorry I just tried to edit 3 times and the spoiler tags didnt work...

Trigger:
  • set variables
    • Events
      • Player - Player 1 (Red) Presses the Up Arrow key
    • Conditions
    • Actions
      • Set Player1upkey = 1
Trigger:
  • release
    • Events
      • Player - Player 1 (Red) Releases the Up Arrow key
    • Conditions
    • Actions
      • Set Player1upkey = 0
Trigger:
  • periodic
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Player1upkey Equal to 0
        • Then - Actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player1upkey Equal to 1
            • Then - Actions
              • Unit Group - Pick every unit in (Units in (Playable map area) matching ((((Matching unit) is A Hero) Equal to True) and ((Owner of (Matching unit)) Equal to Player 1 (Red)))) and do (Actions)
                • Loop - Actions
                  • Unit - Order (Picked unit) to Move To ((Position of (Picked unit)) offset by 50.00 towards (Facing of (Picked unit)) degrees)
                  • Camera - Pan camera for Player 1 (Red) to ((Position of (Picked unit)) offset by 400.00 towards (Facing of (Picked unit)) degrees) over 0.20 seconds
            • Else - Actions
Trigger:
  • set left
    • Events
      • Player - Player 1 (Red) Presses the Left Arrow key
    • Conditions
    • Actions
      • Set player1leftkey = 1
Trigger:
  • left release
    • Events
      • Player - Player 1 (Red) Releases the Left Arrow key
    • Conditions
    • Actions
      • Set player1leftkey = 0
Trigger:
  • periodic left
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • player1leftkey Equal to 0
        • Then - Actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • player1leftkey Equal to 1
            • Then - Actions
              • Unit Group - Pick every unit in (Units in (Playable map area) matching ((((Matching unit) is A Hero) Equal to True) and ((Owner of (Matching unit)) Equal to Player 1 (Red)))) and do (Actions)
                • Loop - Actions
                  • Unit - Make (Picked unit) face ((Facing of (Picked unit)) + 5.00) over 0.00 seconds
                  • Camera - Pan camera for Player 1 (Red) to ((Position of (Picked unit)) offset by 400.00 towards (Facing of (Picked unit)) degrees) over 0.20 seconds
            • Else - Actions
Trigger:
  • set right
    • Events
      • Player - Player 1 (Red) Presses the Right Arrow key
    • Conditions
    • Actions
      • Set player1rightkey = 1
Trigger:
  • right release
    • Events
      • Player - Player 1 (Red) Releases the Right Arrow key
    • Conditions
    • Actions
      • Set player1rightkey = 0
Trigger:
  • periodic right
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • player1rightkey Equal to 0
        • Then - Actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • player1rightkey Equal to 1
            • Then - Actions
              • Unit Group - Pick every unit in (Units in (Playable map area) matching ((((Matching unit) is A Hero) Equal to True) and ((Owner of (Matching unit)) Equal to Player 1 (Red)))) and do (Actions)
                • Loop - Actions
                  • Unit - Make (Picked unit) face ((Facing of (Picked unit)) - 5.00) over 0.00 seconds
                  • Camera - Pan camera for Player 1 (Red) to ((Position of (Picked unit)) offset by 400.00 towards (Facing of (Picked unit)) degrees) over 0.20 seconds
            • Else - Actions
Trigger:
 

uberfoop

~=Admiral Stukov=~
Reaction score
177
I would guess that since the unit is in self-motion, it automatically adjusts the facing back to its movement direction; when a unit is walking somewhere, movement dictates facing, not the other way around.
 

Stu-pac

New Member
Reaction score
0
so would there be no alternative to instantly moving the unit? because then I would have to make separate triggers for different boats, and item speed bonuses, power ups ect...
 

Danis[h]

New Member
Reaction score
19
Maybe what you need is a movement system with more conditions, and then issue order with a polar offset?

So if you press the up arrow key it will set up1 = true
then if you press right it will check if up1 is true.

if up1 = true, set forwardRight = true and then in the movement trigger you could order the unit to move to point with polar offset.

Something along those lines.. So it would be ordered to move to point of unit offset by 200 towards +20 degrees or whatnot.. and if only up1 is true, then order it with a +0 degrees
 

Stu-pac

New Member
Reaction score
0
I kind of understand what you are trying to say but can u explain a bit more exactly what I could do?
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top