I have the following code :
Enemy:
var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var range : float=10f;
var range2 : float=10f;
var stop : float=0;
var myTransform : Transform; //current transform data of this enemy
var attackRange = 15.0;
function Awake()
{
myTransform = transform; //cache transform data for easy access/preformance
}
function Start()
{
target = GameObject.FindWithTag("Player").transform; //target the player
}
function OnCollisionEnter(collision : Collision){
if(collision.gameObject.CompareTag("Player")){
//Reduce global health var here
transform.Translate.x(Vector3.forward * moveSpeed * Time.deltaTime,0,0);
//now we'll knock the player back
var myWorldForward : Vector3 = transform.TransformDirection(Vector3.forward); // convert my local forward to world space
collision.gameObject.SendMessage("Knockback", myWorldForward);
}
}
function Update () {
//rotate to look at the player
var distance = Vector3.Distance(myTransform.position, target.position);
if (distance<=range2 && distance>=range){
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
}
else if(distance<=range && distance>stop){
//move towards the player
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
else if (distance<=stop) {
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
}
}
Player:
#pragma strict
var MaxHealth = 100;
var Health : int;
var maximumHitPoints = 100;
var hitPoints : float;
var regenerationSpeed : float = 5;
var damageSound : AudioClip[];
private var edamageSound : int = 0;
var playSoundsGO : GameObject;
var shakeGO : GameObject;
var die : AudioClip;
var deadReplacement : Transform;
var mySkin : GUISkin;
var canRegenerate : boolean = true;
private var radar : GameObject;
private var maxHitPoints : int;
var damageTexture : Texture;
private var time : float = 0.0;
private var alpha : float;
private var callFunction : boolean = false;
private var showTexture : boolean = false;
private var damageMessage : boolean = false;
function Start (temp)
{
Health = MaxHealth;
GUI.Box (new Rect (0,0,100,50), "Top-left");
}
function ApplyDammage (TheDammage : int)
{
Health -= TheDammage;
playSoundsGO.audio.clip = damageSound[Random.Range(0, damageSound.length)];
playSoundsGO.audio.volume = 0.4;
playSoundsGO.audio.Play();
time += TheDammage/7;
if(Health <= 0)
{
Dead();
}
}
function Dead()
{
RespawnMenuV2.playerIsDead = true;
Debug.Log("Player Died");
}
function RespawnStats ()
{
Health = MaxHealth;
}
I want to make a damage to a player when enemy touch firs person controller. I found this : Collision with enemy = lose health
however I put it in my code but it doesn’t work
Also I want to make a score when enemy died for example when I kill one enemy I will receive one point and so on. Any advice how to that ?
Every Help Appreciated.
Thanks