- Home /
How to set a firerate on this?
I want to make it so the projectile only can shoot 1 time per second.
var rocketPrefab: Transform; var rocketSpeed: float = 20;
var spawnPoint: Transform; function Start(){
}
function Update () {
if (Input.GetButtonDown("Fire1")){ // create a ray from the center of the screen
GetComponent.<AudioSource>().pitch = 2;
GetComponent.<AudioSource>().Play();
var ray: Ray = Camera.main.ViewportPointToRay(Vector3(0.5,0.5,0)); var hit: RaycastHit; var dir: Vector3; if (Physics.Raycast(ray, hit)){ // if something aimed // find the direction from spawnPoint to the target
dir = (hit.point - spawnPoint.position).normalized;
}
else { // if there's nothing, use the ray direction
dir = ray.direction; // spawnPoint.forward works too (see note below)
}
var rot = Quaternion.FromToRotation(rocketPrefab.forward, dir); // instantiate the rocket
var rocket = Instantiate(rocketPrefab, spawnPoint.position, rot); // launch the rocket
rocket.GetComponent(Rigidbody).velocity = dir*rocketSpeed;
}
}
Comment
Answer by Digital-Phantom · Apr 08, 2015 at 02:12 PM
try -
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour
{
public float fireRate;
private float nextFire; //set the time between shots
void Update()
{
if (Input.GetButton("Fire1") && Time.time > nextFire)
{
nextFire = Time.time + fireRate;
GetComponent.<AudioSource>().pitch = 2;
GetComponent.<AudioSource>().Play();
var ray: Ray = Camera.main.ViewportPointToRay(Vector3(0.5,0.5,0)); var hit: RaycastHit; var dir: Vector3; if (Physics.Raycast(ray, hit)){ // if something aimed // find the direction from spawnPoint to the target
dir = (hit.point - spawnPoint.position).normalized;
}
else { // if there's nothing, use the ray direction
dir = ray.direction; // spawnPoint.forward works too (see note below)
}
var rot = Quaternion.FromToRotation(rocketPrefab.forward, dir); // instantiate the rocket
var rocket = Instantiate(rocketPrefab, spawnPoint.position, rot); // launch the rocket
rocket.GetComponent(Rigidbody).velocity = dir*rocketSpeed;
}
}
}
:)
thanks, but this gave me a million errors. Is this possible in JS?
Answer by Raimi · Apr 09, 2015 at 04:35 AM
Try this out...
public float delay = 0;
public float rate = 1f;
void Update()
{
if (Input.GetButton("Fire1"))
{
InvokeRepeating("Fire", delay, rate);
}
}
void Fire()
{
//Instantiate prefab or wateva
}
Hope it helps :)
Your answer
Follow this Question
Related Questions
Raycast Gun Fire Rate 0 Answers
Set fire rate of a sentry gun 1 Answer
Fire rate problem [C#] 1 Answer
how to add firerate to enemies shooting script 0 Answers
Reload and Fire rate. 1 Answer