Синтаксис:
Используется javascript
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;
var damag = 10;
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("run");
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("waitingforbattle");
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 && PlayerHealth.curHealth > 0){
damage = ((Random.Range(1, baseDamage)) * ((Random.Range(1, dice))));
// damagePlayer.SendMessage ("PlayerDamage", damage);
anim.animation.CrossFade("attack");
PlayerHealth.curHealth -= 10;
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);
}
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;
var damag = 10;
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("run");
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("waitingforbattle");
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 && PlayerHealth.curHealth > 0){
damage = ((Random.Range(1, baseDamage)) * ((Random.Range(1, dice))));
// damagePlayer.SendMessage ("PlayerDamage", damage);
anim.animation.CrossFade("attack");
PlayerHealth.curHealth -= 10;
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);
}
Плиз помогите решить пару проблем , а то сижу , сижу а решить не могу
1 Атака моба он атакует раз в секу а как сделать чтобы атакавал раз в 2 секи
2 Когда я стартую моб сразу начинает бежать за мной , а как сделать чтобы он начинал бежать когда я к нему только подхожу и когда отхожу он останавливался
Плиз помогите решить проблему , неполучается у меня