- Home /
Instantiating by touch on iPhone/iPad
I am making a game for iphone/Ipad where the main character has to throw grenades against his enemies when I double tap on the screen. As I foresee very simple the situation -which is not- I choose a Javascript included in the Unity documentation:
// Instantiates a projectile whenever the user taps on the screen
var grenade : GameObject; var GrenadeForce : Float;
function Update () {
for (var i = 0; i < Input.touchCount; ++i) { if (Input.GetTouch(i).phase == TouchPhase.Began){
clone = Instantiate (grenade, transform.position, transform.rotation);
//add force to the grenade
grenade.rigidbody.AddForce(transform.forward * GrenadeForce);
}
}
}
But when I tap on the screen the character drop the grenade on the floor; he do not throw the grenade away regardless the GrenadeForce that I write down on the script.
What am I doing wrong?
Someone could help me on this?
Answer by Qwerty · Mar 17, 2011 at 12:28 AM
I was typing a long answer then realised the problem:
should be
clone.rigidbody.AddForce(transform.forward * GrenadeForce);
(grenade is the name of the prefab slot, but clone is the variable name you give it, so use this to control it)
--I will leave the other part here incase anyone else has a similar problem---
A couple other things you can check are:
1: your prefab grenade actually has a rigidbody attached to it and you have attached it to the script
forward is going to define the z axis, try ".up" for y axis, or ".right" for x axis
if these don't work, try
clone : GameObject = Instantiate (grenade, transform.position, transform.rotation) as GameObject;
Just to add if you haven't defined clone as a var earlier you should have "var clone : Gameobject = instantiate..."
Wow! Your answer was fast and precise! Thanks a lot for your great help! Now, my character throw the grenades properly. Thanks, again.