This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ~ ~ NOTOC~ ~ Character Movement This is where I see a few artists go running off, please bear with me as it wont be that painful! To get our character to do some thing we need to run a script on it. Earlier in the tutorial we added a Micro Script action to the entity. This script is unique to this object and as such, you can not damage any script library file. The worst that can happen is that you break the script, which in this case will be a very easy fix. I promise! <grid> <col sm="6"> 1) Open the Script Open this characters Micro Script by first selecting the character and RMB > Lua - [Edit] Micro Script <well></well> </col> <col sm="6"> 2) Script Editor Fear not, for a lot of mechanics tutorials you can just copy and paste code directly into the script editor and save. This will be generally all you need to do unless you are feeling a bit more adventurous or of course you are a scripter. So you should have the script editor open now and looking similar to the following image. <well></well> </col> </grid> <grid> <col sm="6"> 3a) Copy Paste Script Select all of the script text and delete it, you should have a blank page. This is in preparation for adding the new movement example script. <well>Optional Information: Each script in the editor lives in its own Tab Page which you can see at the top of the text area. Each new script that opens in the editor creates a new tab. The tab contains the name of the entity it is attached to plus you may notice the prefix of MS: This signifies that it is a micro script not an external script. </well> Ensure you have the characters script open, you can check the name of the script from the "Tab" as we just looked at. Copy the script from below and paste it into the characters scripts blank page. </col> <col sm="6"> 3b) Save Script Then all you need to do is press the save button. Clicking save in the script editor is context aware, i.e. it saves to the selected pages object if it is a micro script, or to a file location if it is an external script. <well> As we have mentioned Micro scripts are saved to the object not to file this means it is saved with the scene file, so make sure you save your scene regularly. </well> </col> </grid> <grid> <col sm="6"> 5) The Movement Script Copy the following code and paste into the characters micro script. Then press the script editors save button and also save your scene. <well> walkSpeed = 1000; runSpeed = 2000; turnSpeed = 150; jumpAmt = 0.2; obj = 0; forwardKeyDown = false; backKeyDown = false; leftKeyDown = false; rightKeyDown = false; shiftKeyDown = false; spaceKeyDown = false; isJumping = false; idleanim = ""; walkanim = ""; runanim = ""; jumpanim = ""; timeDelta = 0.0; -- System initialisation - Skyline script entry point function onInit(objID) sky.lprint("LUA: Script Active!"); obj = objID; end -- Called after all the scenes onInit() have been called. -- If you need to ensure your data exits, then do you set up here function postInit() idleanim = anim.getFromMap(obj, "Idle1"); walkanim = anim.getFromMap(obj, "Walk"); runanim = anim.getFromMap(obj, "Run"); jumpanim = anim.getFromMap(obj, "Jump"); anim.playAnimation(obj, idleanim, 0, 0); end -- Updated every frame function onUpdate(td) timeDelta = td; checkForKeys() end function idle() character.move(obj, 0 ); anim.playAnimation(obj, idleanim,30, 1); end function walk(direction) character.move(obj, walkSpeed*direction*timeDelta ); anim.setSpeed(obj, walkanim, direction); anim.playAnimation(obj, walkanim, 30, 1); end function run(direction) character.move(obj, runSpeed*direction*timeDelta ); anim.setSpeed(obj, runanim, direction); anim.playAnimation(obj, runanim, 100, 1); end function turn( direction ) if(direction == -1)then entity.turn(obj, 0, turnSpeed*timeDelta, 0) elseif(direction == 1)then entity.turn(obj, 0, -turnSpeed*timeDelta, 0) end end function startJump() character.setJumpDownforce(obj, 1000); character.doJump(obj, 400 ); anim.playAnimation(obj, jumpanim, 10, 1); end function checkForKeys(timeDelta) if(forwardKeyDown == true and shiftKeyDown == false)then walk(1); elseif(forwardKeyDown == true and shiftKeyDown == true)then run(1); elseif(backKeyDown == true and shiftKeyDown == false)then walk(-1); elseif(backKeyDown == true and shiftKeyDown == true)then run(-1); else idle(); end if(spaceKeyDown == true)then startJump(); end if(leftKeyDown == true)then turn(-1, timeDelta); end if(rightKeyDown == true)then turn(1, timeDelta); end end function onKeyDown(key) if(key == "w")then forwardKeyDown = true; end if(key == "s")then backKeyDown = true; end if(key == "a")then leftKeyDown = true; end if(key == "d")then rightKeyDown = true; end if(key == "space")then spaceKeyDown = true; end if(key == "shift")then shiftKeyDown = true; end end function onKeyUp( key ) if(key == "w")then forwardKeyDown = false; end if(key == "s")then backKeyDown = false; end if(key == "a")then leftKeyDown = false; end if(key == "d")then rightKeyDown = false; end if(key == "space")then spaceKeyDown = false; end if(key == "shift")then shiftKeyDown = false; end end </well> Save the script and…… <alert type="warning" icon="glyphicon glyphicon-user" dismiss="false"> Don’t forget To Save Your Scene </alert> If you would like to know more about how this script works please read to the end of the next section, as after the walking and running speed has been covered you will be able to skip the page if you are not interested in the scripting! </col> <col sm="6"> </col> </grid> <-tutorials:tutorials_character_a3|Previous: Setup Controller^tutorials:tutorials_character_a0|Basic Character Index^tutorials:tutorials_character_a5|Next: The Script and Camera→ Detach Close Document TOC Developer Sidebar SidebarDev HTML5 Bootstrap Commands Nav Menu Example TOC Ideas Site Index Layout: Tutorial Intro Layout: Tutorial Page Layout: FAQ Page Layout: Index Home Welcome What is Skyline Terminology FAQ FAQ Index Working on Scenes Scripting Assets General Info Installation and Setup Game Objects Manual Scripting Index Script Overview Micro Scripts External Scripts Scene Scripts Events Tags and ID's Communicating with Scripts Communicating with Modules Communicating with actions Dynamic Properties Learning Tutorials Index Basic Character Basic Shooting Guides Index Getting Started Video Tutorials Index