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.

patroll

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);
	
} 

Tags:

Comments are closed

Latest posts

Categories

Latest Comments

Der er ingen kommentarer at vise.