- Home /
Script for shooting a target
Hi, I try to do a shoot script where the bullet's direction is determine by a target (like a spell in a mmorpg).
Actually I have this script, the bullet just spawn on my character, fall on the ground and dont move. Thx for any help !
var Bullet : Transform;
var Speed = 16000;
var spawnPoint : Transform;
var RapidFire = false;
var SingleFire = true;
private var shooting = false;
var Counter = Time.deltaTime;
var RateOfFire = 0.250000;
var cible : Transform;
function FixedUpdate ()
{
var ciblepost = cible.position;
targetPosition=cible.position;
var ciblepos = Vector3(cible.position.x, cible.position.y, cible.position.z);
if(SingleFire==true){
if(Input.GetButtonUp("Fire1")){
var shot =Instantiate(Bullet, spawnPoint.transform.position, Quaternion.identity);
shot.rigidbody.AddForce(transform.ciblepos * Speed); } }
if(RapidFire ==true){
if(Input.GetButtonDown("Fire1")){
shooting=true;
}
if(Input.GetButtonUp("Fire1")){
shooting=false;
}
if(shooting==true){ Counter += Time.deltaTime;
if(RateOfFire<Counter){
var shotRapid =Instantiate(Bullet, spawnPoint.transform.position,Quaternion.identity);
shotRapid.rigidbody.AddForce(transform.ciblepos * Speed);
Counter=0; } } } }
Comment
I can't tell exactly why, but I think it has something to do with the Vector that you pass into AddForce on line 21. Also, your code was giving me a headache, so I refactored it.
var bullet : Transform;
var speed = 16000;
var spawnPoint : Transform;
var rapidFire = false;
var singleFire = true;
private var isShooting = false;
var counter = Time.deltaTime;
var rateOfFire = 0.250000;
var cible : Transform;
function FixedUpdate()
{
var ciblepost = cible.position;
targetPosition=cible.position;
var ciblepos = Vector3(cible.position.x, cible.position.y, cible.position.z);
if(singleFire && Input.GetButtonDown("Fire1"))
{
var shot = Instantiate(bullet, spawnPoint.position, spawnPoint.rotation);
shot.rigidbody.AddForce(shot.transform.forward * speed);
}
else if(Input.GetButton("Fire1"))
{
counter += Time.deltaTime;
if(rateOfFire < counter)
{
var shotRapid =Instantiate(bullet, spawnPoint.transform.position,Quaternion.identity);
shotRapid.rigidbody.AddForce(transform.ciblepos * speed);
counter=0;
}
}
}