O
OneEight7eve
Guest
This has been done before but i didn't really like any of the others ones so i made one myself. The difference in this one (from the ones i have tried ) is that its smoother and reacts faster.
Arrow Key Movement
1.0
1) Create 3 Variables , named "Up", "Right" , "Left". Make those 3 Boolean arrays for the type and make a new variable called Players_Hero with type Unit Array. and another variable named TempPoint and its type point array.
2) Create a map init trigger and set some unit into the Players_Hero variable
3) Create a new trigger named "Up Pressed"
4) add this event to the trigger : Player - Player 1 (Red) Presses the Up Arrow key
5) add the variable up in the actions part and make it look like this
Set Up[(Player number of (Triggering player))] = True
6) Make that for all the arrow keys except for down.
Example:
1.1
Now we are going to create the "release triggers" you will basically be doing the same thing as the pressed ones but like this
Now do that for all the arrow keys. except don't add the Unit - Order Stop action in any of the other ones.
2.0
Create a new trigger named Movement. this trigger will be detecting the variables to order a unit to move. for example :
if the variable Up is = True then it will move that unit up.
1) create the event Time - Every 0.25 seconds of game time
2) add the action Player Group - Pick all players and do actions
Loop actions
3) in the loop actions part create an If/Then/Else action. so far it should look like this :
in the If - Conditions part of the trigger add these conditions
4) after that , create under the Then -Actions part the variable TempPoint like this
Now do the same thing in more loops for all the variables. it should look like this at the end :
your still not done. now for the diagonal movement part. we wont be actually ordering the unit to move diaganol we will move him instantly to point. this is pretty simple so im just going to post the trigger for diagonals.
There you go you made an arrow key movement system. in case you didn't understand it or i didn't explain well take a look at the triggers your self in the demo map (Camera system is in demo map also). . idk if im good or not at explaining things either soooo
Arrow Key Movement
1.0
1) Create 3 Variables , named "Up", "Right" , "Left". Make those 3 Boolean arrays for the type and make a new variable called Players_Hero with type Unit Array. and another variable named TempPoint and its type point array.
2) Create a map init trigger and set some unit into the Players_Hero variable
3) Create a new trigger named "Up Pressed"
4) add this event to the trigger : Player - Player 1 (Red) Presses the Up Arrow key
5) add the variable up in the actions part and make it look like this
Set Up[(Player number of (Triggering player))] = True
6) Make that for all the arrow keys except for down.
Example:
Code:
Up Press
Events
Player - Player 1 (Red) Presses the Up Arrow key
Player - Player 2 (Blue) Presses the Up Arrow key
Player - Player 3 (Teal) Presses the Up Arrow key
Player - Player 4 (Purple) Presses the Up Arrow key
Conditions
Actions
Set Up[(Player number of (Triggering player))] = True
Code:
Right Press
Events
Player - Player 1 (Red) Presses the Right Arrow key
Player - Player 2 (Blue) Presses the Right Arrow key
Player - Player 3 (Teal) Presses the Right Arrow key
Conditions
Actions
Set Right[(Player number of (Triggering player))] = True
Code:
Left Press
Events
Player - Player 1 (Red) Presses the Left Arrow key
Player - Player 2 (Blue) Presses the Left Arrow key
Player - Player 3 (Teal) Presses the Left Arrow key
Player - Player 4 (Purple) Presses the Left Arrow key
Conditions
Actions
Set Left[(Player number of (Triggering player))] = True
1.1
Now we are going to create the "release triggers" you will basically be doing the same thing as the pressed ones but like this
Code:
Up Release
Events
Player - Player 1 (Red) Releases the Up Arrow key
Player - Player 2 (Blue) Releases the Up Arrow key
Player - Player 3 (Teal) Releases the Up Arrow key
Player - Player 4 (Purple) Releases the Up Arrow key
Conditions
Actions
Set Up[(Player number of (Triggering player))] = False
Unit - Order PlayersHero[(Player number of (Triggering player))] to Stop
Now do that for all the arrow keys. except don't add the Unit - Order Stop action in any of the other ones.
2.0
Create a new trigger named Movement. this trigger will be detecting the variables to order a unit to move. for example :
if the variable Up is = True then it will move that unit up.
1) create the event Time - Every 0.25 seconds of game time
2) add the action Player Group - Pick all players and do actions
Loop actions
3) in the loop actions part create an If/Then/Else action. so far it should look like this :
Code:
Untitled Trigger 001
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Then - Actions
Else - Actions
in the If - Conditions part of the trigger add these conditions
.Up[(Player number of (Picked player))] Equal to True
Left[(Player number of (Picked player))] Equal to False
Right[(Player number of (Picked player))] Equal to False
4) after that , create under the Then -Actions part the variable TempPoint like this
after that action were going to add the moving part of it it should look like thisSet TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))])
Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees)
Now do the same thing in more loops for all the variables. it should look like this at the end :
Code:
Movement
Events
Time - Every 0.25 seconds of game time
Conditions
Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Up[(Player number of (Picked player))] Equal to True
Left[(Player number of (Picked player))] Equal to False
Right[(Player number of (Picked player))] Equal to False
Then - Actions
Animation - Change PlayersHero[(Player number of (Triggering player))]'s animation speed to 50.00% of its original speed
Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))])
Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees)
Custom script: call RemoveLocation (udg_TempPoint[GetConvertedPlayerId(GetEnumPlayer())])
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Right[(Player number of (Picked player))] Equal to True
Then - Actions
Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))])
Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards ((Facing of PlayersHero[(Player number of (Picked player))]) + -90.00) degrees)
Custom script: call RemoveLocation (udg_TempPoint[GetConvertedPlayerId(GetEnumPlayer())])
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Left[(Player number of (Picked player))] Equal to True
Then - Actions
Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))])
Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards ((Facing of PlayersHero[(Player number of (Picked player))]) + 90.00) degrees)
Custom script: call RemoveLocation (udg_TempPoint[GetConvertedPlayerId(GetEnumPlayer())])
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Down[(Player number of (Picked player))] Equal to True
Then - Actions
Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))])
Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by -75.00 towards ((Facing of PlayersHero[(Player number of (Picked player))]) + 0.00) degrees)
Custom script: call RemoveLocation (udg_TempPoint[GetConvertedPlayerId(GetEnumPlayer())])
Else - Actions
your still not done. now for the diagonal movement part. we wont be actually ordering the unit to move diaganol we will move him instantly to point. this is pretty simple so im just going to post the trigger for diagonals.
Code:
Stop Turn
Events
Time - Every 0.30 seconds of game time
Conditions
Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Up[(Player number of (Picked player))] Equal to True
Left[(Player number of (Picked player))] Equal to True
Then - Actions
Unit - Make PlayersHero[(Player number of (Picked player))] face ((Facing of PlayersHero[(Player number of (Picked player))]) + 65.00) over 0.10 seconds
Set TempPoint[(Player number of (Picked player))] = ((Position of PlayersHero[(Player number of (Picked player))]) offset by 10.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees)
Unit - Move PlayersHero[(Player number of (Picked player))] instantly to TempPoint[(Player number of (Picked player))]
Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Up[(Player number of (Picked player))] Equal to True
Right[(Player number of (Picked player))] Equal to True
Then - Actions
Unit - Make PlayersHero[(Player number of (Picked player))] face ((Facing of PlayersHero[(Player number of (Picked player))]) + -65.00) over 0.10 seconds
Set TempPoint[(Player number of (Picked player))] = ((Position of PlayersHero[(Player number of (Picked player))]) offset by -10.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees)
Unit - Move PlayersHero[(Player number of (Picked player))] instantly to TempPoint[(Player number of (Picked player))]
Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Else - Actions
There you go you made an arrow key movement system. in case you didn't understand it or i didn't explain well take a look at the triggers your self in the demo map (Camera system is in demo map also). . idk if im good or not at explaining things either soooo