Ok so im trying to make a game sort of like cod zombies. I got the zombie character pack off of the asset store but so far all ive been able to do is make him turn to whichever direction i am. Will someone either please give me a script to make him follow me or please give me an entire new zombie
If you want my project so you can see what Im talkin about just ask for it
Add this script to make zombie move:
var speed = 5.0;
function Update () {
var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; var z = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.Translate(x, 0, z);
}
Now add this script to make zombie follow you:
var target : Transform;
var distance = 3.0;
var height = 3.0;
var damping = 5.0;
var smoothRotation = true;
var rotationDamping = 10.0;
function Update () {
var wantedPosition = target.TransformPoint(0, height, -distance);
transform.position = Vector3.Lerp (transform.position, wantedPosition, Time.deltaTime * damping);
if (smoothRotation) {
var wantedRotation = Quaternion.LookRotation(target.position - transform.position, target.up);
transform.rotation = Quaternion.Slerp (transform.rotation, wantedRotation, Time.deltaTime * rotationDamping);
}
else transform.LookAt (target, target.up);
}
The above script means that you can take out any script that makes zombies look at
Ok sorry for the delay. Add this script to the zombies:
var speed = 5.0;
function Update () {
var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; var z = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.Translate(x, 0, z);
}
Here you can also adjust the speed that the zombies are moving. Hope this helps.
if he is looking at the guy then just have him move in the Z direction… so probably something like
transform.translate(0,0,1);
then he moves at a rate of 1 unit per frame… if you want him to move at a unit per second basis just use time.DeltaTime
so transform.translate(0,0,1*time.DeltaTime);
p.s. pretty sure my caps are not correct so check the UNITY SCRIPTING REFERENCE for the caps and such
in the reference in the search field just type in transform… then look for translate and follow the guide
Add this script to your zombie.
Script 1:
var spawn : Transform;
var vectim : Transform;
var speed : float;
var rotationSpeed : float;
var seeDistance : float = 30;
var damage : int;
var dice : int = 1;
var baseDamage : int = 1;
var anim : GameObject;
var hit : AudioClip;
private var myTransform : Transform;
private var idle : int = 0;
private var returnToSpawn : int = 1;
private var chasePlayer : int = 2;
private var attackPlayer : int = 3;
private var dead : int = 4;
private var status = returnToSpawn;
private var seconds : int;
private var savedTime : int;
private var damagePlayer : GameObject;
function Awake(){
myTransform = transform;
}
function Start () {
damagePlayer = gameObject.FindWithTag(“Player”);
}
function Update () {
var target : Transform;
var dist = Vector3.Distance(spawn.position, myTransform.position);
var aggro = Vector3.Distance(vectim.position, myTransform.position);
var statusString : String;
seconds = Time.time;
if (dist > 50 || (aggro > seeDistance && dist > 3))
status = returnToSpawn;
else if (dist < 30 && (aggro < seeDistance && aggro > 1))
status = chasePlayer;
else if (aggro < 1)
status = attackPlayer;
switch(status){
case returnToSpawn:
target = spawn;
anim.animation.CrossFade("Take 001");
myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - transform.position), rotationSpeed * Time.deltaTime);
myTransform.position += transform.forward * (speed/2) * Time.deltaTime;
statusString = "Return";
if (dist < 3)
status = idle;
break;
case chasePlayer:
target = vectim;
myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed * Time.deltaTime);
myTransform.position += myTransform.forward * speed * Time.deltaTime;
statusString = "Chase";
anim.animation.CrossFade("Take 001");
break;
case attackPlayer:
target = vectim;
myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - transform.position), rotationSpeed * Time.deltaTime);
statusString = "Attack";
if (aggro > 1)
status = chasePlayer;
if (seconds != savedTime){
damage = ((Random.Range(1, baseDamage)) * ((Random.Range(1, dice))));
damagePlayer.SendMessage ("PlayerDamage", damage);
anim.animation.CrossFade("Fury");
audio.PlayOneShot(hit, 1.0 / audio.volume);
savedTime = seconds;
}
break;
case idle:
target = spawn;
break;
default:
break;
}
myTransform.eulerAngles = new Vector3(0, myTransform.eulerAngles.y, 0);
}