- Home /
Question by
crusaderWR84 · Sep 27, 2016 at 10:37 AM ·
c#rigidbodyscript.animationevent
Instatiated GameObject won't move even though it has a rigidbody
I have a prefab I instantiated as a game object and the game object has a rigidbody that is instantiated on a when the user presses a key then it should have force added to it when the triggered animation reaches a certain frame.Instead I just get the nullrefrenceexception error when I try to add force. Can someone please help me?
Here is my script: using UnityEngine; using System.Collections;
public class RoniCombat : MonoBehaviour
{
//declare the bat prefab to be added in inspector
public GameObject bat;
//declare the knife prefab to be added in inspector
public GameObject knife;
//declare the spawn point of the knife prefab to be added in inspector
public GameObject knifeSpawn;
//force to add to knife when it is thrown
public float force = 50;
//declare the Rigidbody that will be attached to the instatiated knife
Rigidbody knifeInstance;
//declare the animation
Animator anim;
//bool to see if the bat should be active
bool usingBat;
void Start ()
{
//grab the animator
anim = GetComponent<Animator> ();
//check to see if the player is using the bat...
if (bat.activeSelf) {
//if so enable the bat in the scene
usingBat = true;
bat.SetActive(true);
}
//otherwise...
else
{
//disable the bat and use knives
usingBat = false;
bat.SetActive(false);
}
}
void Update ()
{
//if the player has pressed the button to switch weapons...
if(Input.GetButtonDown("Switch"))
{
//toggle the bat
bat.SetActive (!bat.activeSelf);
}
//if they press the swing button and the bat is in the scene...
if (Input.GetButtonDown ("Swing") && bat.activeSelf)
{
//swing the bat
anim.SetBool ("Swing", true);
}
//otherwise
else
{
//don't swing the bat
anim.SetBool ("Swing", false);
}
//if the throw button is pressed...
if (Input.GetButtonDown ("Throw") && !bat.activeSelf)
{
//call the spawn knife method
spawnKnife ();
//perform the throwing animation
anim.SetBool ("Throw", true);
}
//otherwise...
else
{
//don't perform the throwing animation
anim.SetBool ("Throw", false);
}
}
//create the spawnKnife() method
void spawnKnife ()
{
//assign the knifeInstance rigidbody a value
knifeInstance = Instantiate(knife, knifeSpawn.transform.position, (Quaternion.Euler(0,-90,0))) as Rigidbody;
}
//declare the throwKnife method which is called as an animation event
void throwKnife()
{
//propel the knife forward
knifeInstance.AddForce (0, 0, force);
}
}
The animation clearly has the animation event attached. is it because knifeInstance isn't assigned a value inside of the throwKnife() Method?
Comment