- Home /
velocity issue on pushing an object forward.
I am making a object throwing script and have an issue:
"velocity" is not a member of UnityEngine.GameObject
Here is my script.
Grenade.velocity = transform.TransformDirection( Vector3( 0, 0, ThrowPower) );
Answer by ByteSheep · Mar 28, 2013 at 11:27 PM
Grenade is a GameObject and velocity has to be accessed through the rigidbody of the gameobject.
Make sure your grenade object has a rigidbody component attached and then use this instead:
Grenade.rigidbody.velocity = transform.TransformDirection( Vector3( 0, 0, ThrowPower) );
I no longer get an error, but the force doesn't take play.
Yes the grenade has a rigidbody, and yes I have tried raising the force. It doesn't move a bit. Is the line of code not good for pushing objects?
You should probably rather try something like this using AddRelativeForce:
Grenade.rigidbody.AddRelativeForce (Vector3.forward * 10);
Still no luck. Anything I could be missing on the grenade? The rigid body is at its default settings.
Could you post the whole script so I can have a quick look?
Can't see anything wrong with the code, should work fine if the grenade has a rigidbody attached.. Although you will of course want to test some different values to make sure there isn't just too little force.
For example try changing the 10 to a 100 etc:
Grenade.rigidbody.AddRelativeForce (Vector3.forward * 100);
The force is 1000.
#pragma strict
var ThrowPower : float = 1000;
var Grenades : int;
var $$anonymous$$axNades : int;
var Grenade : GameObject;
var ShootTimer : float;
var cooler : float = 4;
function Start () {
}
function Update () {
if(ShootTimer > 0) {
ShootTimer -= Time.deltaTime;
}
if(ShootTimer < 0) {
ShootTimer = 0;
}
if(Input.Get$$anonymous$$ey($$anonymous$$eyCode.G) && Grenades != 0 && ShootTimer == 0) {
grenadefunction();
Grenades = Grenades - 1;
ShootTimer = cooler;
}
maximus();
}
function grenadefunction() {
Instantiate(Grenade, transform.position, Quaternion.identity);
Grenade.rigidbody.AddRelativeForce (Vector3.forward * ThrowPower);
}
function maximus() {
if(Grenades > $$anonymous$$axNades) {
Grenades = $$anonymous$$axNades;
}
}