- Home /
How do i call a function from the child via an animation
I have a Player script and a weapon script and arms witch i animate. the weapon script is attached to each weapon and has the apply damage function on it. i want it to do the function from the animation that the arms do, and the weapon is the child of the arms. how would i get the function to show up in the animator of the arms?
Here are my scripts
Weapon #pragma strict
public var Dammage : int = 50;
public var MaxDistance : float = 1.5;
public var DammageDelay : float = 1;
var Distance : float;
var AnimControl : GameObject;
function Update ()
{
}
function AttackDammage ()
{
var hit : RaycastHit;
var ray = Camera.main.ScreenPointToRay(Vector3(Screen.width/2, Screen.height/2, 0));
if (Physics.Raycast (ray, hit))
{
Debug.Log(hit.transform.name + ", " + hit.transform.tag);
Debug.Log(Distance + ", " + MaxDistance);
Distance = hit.distance;
if (Distance < MaxDistance)
{
hit.transform.SendMessage("ApplyDammage", Dammage, SendMessageOptions.DontRequireReceiver);
}
}
}
Player
pragma strict
public var CanAttack : boolean = true; public var CanSprint : boolean; public var CanWalk : boolean; public var Sprinting : boolean; public var Walking : boolean; public var Attacking : boolean; var TheAnimator : Animator; public var Playerstate : float; var script : FirstPersonCharacter; var AnimTime : float = 1.1; var Wscript : Weapon; var Distance : float; var Hit : boolean; var PlayerCam : GameObject; var Arms : GameObject;
function Update ()
{
PlayerStateController();
PlayerAnims();
}
function PlayerStateController ()
{
if (Input.GetButtonDown("Fire1") && CanAttack == true && Sprinting == false)
{
Arms.animation.CrossFade("Punch 1");
Walking = false;
Sprinting = false;
Attacking = true;
CanSprint = false;
CanWalk = false;
CanAttack = false;
script = GetComponent("FirstPersonCharacter");
script.walkSpeed = 1.5;
script.runSpeed = 1.5;
script.strafeSpeed = 1.5;
yield WaitForSeconds(AnimTime);
script.walkSpeed = 3;
script.runSpeed = 8;
script.strafeSpeed = 4;
Walking = false;
Sprinting = false;
Attacking = false;
CanSprint = true;
CanWalk = true;
CanAttack = true;
}
if (Input.GetAxis("Vertical") !=0 || Input.GetAxis("Horizontal") !=0)
{
if (Input.GetButton("Sprint") && CanSprint == true && Attacking == false)
{
Playerstate = 2;
Walking = false;
Sprinting = true;
Attacking = false;
CanSprint = true;
CanWalk = true;
CanAttack = true;
}
else if(Attacking == false)
{
Playerstate = 1;
Walking = true;
Sprinting = false;
Attacking = false;
CanSprint = true;
CanWalk = true;
CanAttack = true;
}
}
else if(Attacking == false)
{
Playerstate = 0;
Walking = false;
Sprinting = false;
Attacking = false;
CanSprint = true;
CanWalk = true;
CanAttack = true;
}
}
function PlayerAnims ()
{
if (Playerstate == 0)
{
Arms.animation.CrossFade("Idle");
}
if (Playerstate == 1)
{
Arms.animation.CrossFade("Walk");
}
if (Playerstate == 2)
{
Arms.animation.CrossFade("Run");
}
}
Your answer
Follow this Question
Related Questions
How do i make my attack function not work whilst animation playing? 1 Answer
Can the animation editor create local rotational data? 3 Answers
Animation for weapon plays on game start instead of when i attack 2 Answers
Select Object ( Weapon ) Quick! Help! xD 1 Answer
Javascript Movement Script. Why am I getting these errors? 2 Answers