- Home /
instantiate prefab assigned in inspector c#
Hi,
I'm trying to instantiate a bullet from a c# script. I want to be able to specify the bullet in the inspector.
public Rigidbody m_Bullet;
Then I try to instantiate it as followed:
Rigidbody newBullet = (Rigidbody)Instantiate( m_Bullet, transform.position, transform.rotation );
newBullet.velocity = m_ShootingDirection * 25.0f;
Physics.IgnoreCollision( newBullet.collider, transform.root.collider );
This however doesn't appear to be working properly, since it can't cast to the Rigidbody. I did get it working using the following code:
GameObject bulletGameObj = Instantiate(Resources.Load("Towers/Default/p_BulletDefault"), transform.position + m_ShootingDirection*1.0f, Quaternion.identity) as GameObject;
Rigidbody newBullet = bulletGameObj.rigidbody;
But then I have to specify the path to the bullet, which I don't want to hard-code... Is there any way I can add a prefab in the inspector ? (I could use a string assigned in the inspector, but I don't really like that either, I want to be able to assign the prefab itself, is that possible?)
Thanks!
Answer by rutter · Mar 24, 2012 at 08:05 PM
You probably want to instantiate a GameObject, and then grab its Rigidbody, as in your second example.
To set a prefab reference in the inspector, you can declare a public GameObject variable.
Woa! That works! Didn't think it made any difference whether the varibale was a rigidbody or a gameobject, you still drag the same prefab in the slot in the inspector... Though is there a way of doing this, and also assuring the instantiated object will have a rigidbody?
Your answer
Follow this Question
Related Questions
Spawning a prefab at another object's location 3 Answers
Issue Instantiating prefab in C# 0 Answers
How do I make a clone of a prefab appear on the correct layer? [5.2.2f1] 1 Answer
Prefabs instantiated from an array are keeping their public int value 1 Answer
How to break a prefab connection via c# 0 Answers