Oliver og Andreas arbejder på fuld tryk på spillet “Babypokalypse” hvor ideen (grundlæggende) er at stjæle så mange babyer som muligt fra travle mødre inden politiet kommer – lige for øjeblikket arbejdes der på at få en betaversion af spillet klar så de kan teste det på rigtige mennesker.
Idag (mandag d. 9 december) har vi arbejdet lidt på et patruljescript til mødrene – så de kan gå rundt mellem forskellige fordefinerede punkter i en bestemt rækkefølge.
[unity src=”135″]
Løsningen er ikke helt færdig – lige nu kan vi få figuren til at patruljere – vi mangler at skrive koden til at være i alarmberedskab.
I eksemplet her har vi brugt en lille soldat fra mini-soldier pakken – på den måde kan de som er igang med multiplayer-shooteren også bruge scriptet.
Hvordan laver jeg det sæl ?
1. lav en ny scene
2. hiv mini-soldier figuren ind (enten drengen eller pigen).
3. lav et javascript script til soldaten og kald det PatrolScript.js (se nedenfor)
4. giv soldaten en CharacterController (Add Component >> CharacterController).
5. lav et par cubes/spheres og marker deres collider som trigger
6. lav et javascript script til dine cubes/spheres og kald det PatrolPoint.js (se nedenfor)
7. Vælg din mini soldat i inspectoren i unity og vælg route og skriv det antal PatrolPoint du vil have
8. tilføj dem i den rækkefølge du vil have.
9. lav din egen version af koden.
Her er koden der skal på den patruljerende figur (PatrolScript)
var route:GameObject[]; // liste over det gameObjecter vi vil følge var cur:int=0; // var speed = 3.0; var rotationSpeed = 5.0; var damping = 5.0; // var patrol:boolean=true; function Start () { // animation.wrapMode = WrapMode.Loop; // animation["aim"].wrapMode = WrapMode.ClampForever; animation["singleShot"].wrapMode = WrapMode.ClampForever; animation["multiShot"].wrapMode = WrapMode.ClampForever; animation[ "pistolFire" ].wrapMode = WrapMode.ClampForever; animation[ "jump" ].wrapMode = WrapMode.ClampForever; // animation.Play("idle"); Patrol(); } function Patrol () { patrol=false; animation.CrossFade("idle_look", 0.2); yield WaitForSeconds(1.5); animation.CrossFade("idle", 0.2); yield WaitForSeconds(0.5); if(cur>=route.Length-1){ cur=0; }else{ cur++; } animation.CrossFade("moveForward", 0.2); yield WaitForSeconds(0.2); patrol=true; } function Update () { var controller : CharacterController = GetComponent(CharacterController); if(patrol){ var pos:Vector3; pos.x=route[cur].transform.position.x; pos.z=route[cur].transform.position.z; pos.y=transform.position.y; var rotation = Quaternion.LookRotation(pos - transform.position); transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping); //transform.Translate(0,0,Time.deltaTime*speed); var forward : Vector3 = transform.TransformDirection(Vector3.forward); var curSpeed : float = Time.deltaTime * speed; controller.SimpleMove(forward * curSpeed); //GetComponent (CharacterController).SimpleMove(direction); }else{ } }
Her er koden der skal på punkterne der skal patruljeres imellem (PatrolPoint)
#pragma strict function Start () { //gameObject.renderer.enabled=false; //udkommenter ovenstående hvis du vil have dine punkter skal være usynlige i selve spillet } function OnTriggerEnter (other : Collider) { // other er i dette tilfælde vores lille soldat // på den lille soldat er et Patrol script - det kalder vi med SendMessageUpwards other.gameObject.SendMessageUpwards("Patrol",SendMessageOptions.DontRequireReceiver); }
Comments are closed