so i have a grenade that the player creates,i have it throwing properly except,i can’t throw it upwards when i look up, code:
var radius : float = 5.0;
var power : float = 60000;
var playerScript : PlayerMovementScript;
var timer : float;
var explosion : GameObject;
var player : GameObject;
function Awake()
{
player = GameObject.FindWithTag("Player");
playerScript = GameObject.FindWithTag("Player").GetComponent(PlayerMovementScript);
rigidbody.velocity = player.transform.TransformDirection(Vector3(0,0,playerScript.throwStrength));
}
function Update()
{
timer += 1;
if (timer >= 232)
{
Instantiate(explosion,transform.position,transform.rotation);
var explosionPos : Vector3 = transform.position;
var colliders : Collider[] = Physics.OverlapSphere (explosionPos, radius);
for (var hit : Collider in colliders)
{
if (!hit)
continue;
if (hit.rigidbody)
hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 10);
}
if (timer > 233)
Destroy(gameObject);
}
}
see, i don’t know what to put in the Y Axis of: rigidbody.velocity = player.transform.TransformDirection(Vector3(0,0,playerScript.throwStrength));
ok, here is how I would do it… this would be my grenade script… note: I dont use unityscript, so there may be some syntax errors.
var radius : float = 5.0;
var power : float = 60000;
var timer : float = 5.0;
var explosion : GameObject;
function ThrowGrenade(direction : Vector3, force: float)
{
rigidbody.AddForce(direction, force);
Invoke("Explode", timer);
}
function Explode()
{
Instantiate(explosion,transform.position,transform.rotation);
var explosionPos : Vector3 = transform.position;
var colliders : Collider[] = Physics.OverlapSphere (explosionPos, radius);
for (var hit : Collider in colliders)
{
if (!hit)
continue;
if (hit.rigidbody)
hit.rigidbody.AddExplosionForce(power, explosionPos, radius, 10);
}
}
In my player script…
var : Camera;
var : throwForce : float = 100;
function Start()
{
_camera = Camera.main;
}
function ThrowGrenade()
{
//instantiate grenade... im not writing this part...
var grenade = Instantiate(.....);
var grenadeController = (GrenadeController)grenade.GetComponent(typeof(GrenadeController));
grenadeController.ThrowGrenade(_camera.forward, throwForce);
}