- Home /
need help with enemy script
hello all
can anyone help me i got this script and i want to add gravity how can this be done
var target : Transform; //the enemy's target var moveSpeed = 3; //move speed var rotationSpeed = 3; //speed of turning var gravity:float = 20.0; var Lives = 3; private var dead = false;
private var moveDirection:Vector3 = Vector3.zero;
var myTransform : Transform; //current transform data of this enemy
function OnMouseDown() { if(OnMouseDown) { Dead = true; Lives -= 1; } print(Lives); }
function Awake() { myTransform = transform; //cache transform data for easy access/preformance }
function Start() { target = GameObject.FindWithTag("Player").transform; //target the player
}
function Update () { //rotate to look at the player myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
//move towards the player
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
//Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
switch(Lives)
{
case 0:
Destroy(gameObject);
break;
}
}
also iv recently added lives to it the Lives work but how can i make it that you got to be a specific distance before the player can attack the enemy this script is somewhere in that script but i just got it out so its easier to see
var Lives = 3; private var dead = false;
function OnMouseDown() { if(OnMouseDown) { Dead = true; Lives -= 1; } print(Lives); }
Answer by JusticeAShearing · Aug 01, 2015 at 05:18 PM
The problem is that, while you were changing 'moveDirection' in an attempt to lower the player's Y co-ordinate value, 'moveDirection' itself was not being used, and therefore had no effect.
The same method of creating gravity is found on the Unity Scripting API under 'CharacterController.Move'. However, this method uses a character controller to put 'moveDirection' to use.
Here is a link to the aforesaid page on the Scripting API: http://docs.unity3d.com/ScriptReference/CharacterController.Move.html
I have edited the script so that it uses a character controller (which I attached to the player) to create the effect of gravity:
var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var gravity = 20.0;
var Lives = 3;
private var dead = false;
private var moveDirection : Vector3 = Vector3.zero;
var myTransform : Transform; //current transform data of this enemy
function OnMouseDown()
{
if(OnMouseDown)
{
Dead = true;
Lives -= 1;
}
print(Lives);
}
function Awake()
{
myTransform = transform; //cache transform data for easy access/preformance
}
function Start()
{
target = GameObject.FindWithTag("Player").transform; //target the player
}
function Update ()
{
var controller : CharacterController = GetComponent.<CharacterController>();
//rotate to look at the player
myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed * Time.deltaTime);
//move towards the player
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
//Apply gravity
moveDirection.y -= gravity * Time.deltaTime;
switch(Lives)
{
case 0:
Destroy(gameObject);
break;
}
controller.Move(moveDirection * Time.deltaTime);
}
Please inform me if you encounter problems using this edition of your script.
Your answer
Follow this Question
Related Questions
optimizing Gravitacional object-to-object calculations 1 Answer
Gravity within range 1 Answer
Lives/Death Script 1 Answer
Not losing lives 2 Answers
make projectiles always hit target 1 Answer