random attack animations C#
NOT Mechanim and NOT java. Anything remotely pertaining to my question I have come across concern one or both of the above mentioned conditions. My attack script is C# and I love it but would like to add a variety of melee attacks rather than the enemy just cycling through his arms swinging until the player kills him. the script I have I got online and the author even commented the area where such an array would go down on line 86
public void Attack() { //Add attacking stuff here
}
}
obviously the array would need to be mentioned up top and I tried that. No errors just nowhere to put animations. I have audio randomization scripts and trying to adapt from that. anyway, full attack script below
using UnityEngine;
using System.Collections;
public class AttackArray : MonoBehaviour
{
public enum EnemyState{IDLE = 0, WALK = 1, RUN = 2, ATTACK = 3, KILL = 4};
public AnimationClip enemyIdle;//setting animations
public AnimationClip enemyWalk;//walking
public AnimationClip enemyRun;//running/chasing
public AnimationClip enemyAttack;//attacking player
public AnimationClip enemyKill;//killing player
public AnimationClip enemyDie;//killing player
public NewEnemyHealth enemyHealth;
public Transform Player;//adds the player to the script
private int Stopped = 0;
public int WalkingSpeed = 1;//sets the normal walking speed
public int RunningSpeed = 5;//sets the running (chase player) speed
public int DefaultRunningSpeed = 5;
public int MaxDist= 8;//maximum distance the player can be before enemy stops chasing the player
public float MinDist= 1;//how close the player can be to enemy for enemy to start chasing player
public EnemyState currentState;
private bool PlayerDetected;
void Update()
{
if(Vector3.Distance(transform.position,Player.position) <= MaxDist)//if that object has the tag "Player"
{
PlayerDetected = true;
if (PlayerDetected)
{
transform.LookAt(Player);//Looks at the player
currentState = EnemyState.RUN;
transform.position += transform.forward*RunningSpeed*Time.deltaTime;//follows the player
}
}else if(Vector3.Distance(transform.position,Player.position) > MaxDist)
{
RoamAround ();
}
if (Vector3.Distance (transform.position,Player.position) < MinDist)
{
currentState = EnemyState.ATTACK;
Attack ();
}
if (currentState == EnemyState.IDLE)
{
//print ("The enemy is idle.");
GetComponent<Animation>().CrossFade (enemyIdle.name);
}
else if (currentState == EnemyState.WALK)
{
GetComponent<Animation>().CrossFade (enemyWalk.name);
}
else if (currentState == EnemyState.RUN)
{
GetComponent<Animation>().CrossFade (enemyRun.name);
RunningSpeed = DefaultRunningSpeed;
}
else if (currentState == EnemyState.ATTACK)
{
GetComponent<Animation>().CrossFade (enemyAttack.name);
RunningSpeed = Stopped;
}
else if (currentState == EnemyState.KILL)
{;
GetComponent<Animation>().CrossFade (enemyKill.name);
}
}
void RoamAround()
{
currentState = EnemyState.IDLE;//Add other RoamAround stuff here
}
public void Attack()
{
//Add attacking stuff here
//Application.LoadLevel ("GameOver");
}
}
Just want to confirm something, is the attack playing right now, and you're just want to add more attack animation to it? If yes, you just need to create a function that selects an animation's name from a set of attack animations. and return it to be used in line 72.
Your answer
