system
November 19, 2011, 1:05pm
1
Hi, How can I shoot 1 bullet and then wait 1 second and then shoot 1 bullet again??
right now when I press fire it shoots ~1000 bullets in 1 second…
My script is:
public var snowballPrefab : Transform;
public var snowballSpeed : float = 6000;
function Update(){
if(Input.GetButton("Fire1"))
{
if(!snowballPrefab || !snowballSpeed)
{
Debug.Log("[Shoot] 'bulletPrefab' or 'bulletSpeed' is undefined");
}else{
var snowballCreate = Instantiate(snowballPrefab, GameObject.Find("Main Camera").transform.position, Quaternion.identity);
snowballCreate.rigidbody.AddForce(transform.forward * snowballSpeed);
}
}
}
public var snowballPrefab : Transform;
public var snowballSpeed : float = 6000;
var ReadyToFire = true;
function Update(){
if(ReadyToFire == true) {
if(Input.GetButton("Fire1"))
{
waitToFireAgain();
if(!snowballPrefab || !snowballSpeed)
{
Debug.Log("[Shoot] 'bulletPrefab' or 'bulletSpeed' is undefined");
}
else{
var snowballCreate = Instantiate(snowballPrefab, GameObject.Find("Main Camera").transform.position, Quaternion.identity);
snowballCreate.rigidbody.AddForce(transform.forward * snowballSpeed);
}
}
}
}
function waitToFireAgain() {
ReadyToFire = false;
yield WaitForSeconds (5);
ReadyToFire = true;
}
Try this code out and tell me if it works.
Wentzel
November 19, 2011, 3:06pm
2
WaitForSeconds might be what your looking for.
system
November 19, 2011, 4:12pm
3
you should be able to adapt the solution from this similar question I answered last week.
var snowballPrefab : Transform;
var snowballSpeed : float = 6000;
var reloadTime = 1.0;
var lastShot = -10.0;
function Update (){
if(Input.GetButton("Fire1")){
if(Time.time > reloadTime + lastShot) {
if(!snowballPrefab || !snowballSpeed)
{
Debug.Log("[Shoot] 'bulletPrefab' or 'bulletSpeed' is undefined");
}else{
var snowballCreate = Instantiate(snowballPrefab, GameObject.Find("Main Camera").transform.position, Quaternion.identity);
snowballCreate.rigidbody.AddForce(transform.forward * snowballSpeed);
}
lastShot = Time.time;
}
}
public float nextShootSec;
public GameObject bulletPrefab; ( Put the bullet mesh!!)
public GameObject bulletUnit;
public GameObject shootPoint; ( Put the Shooting Position mesh!!)
void Update() {
Shootingbullet();
}
void Shootingbullet() {
if(Time.time > nextShootSec) {
bulletUnit = Instantiate (bulletPrefab, shootPoint.transform.position,
Quaternion.Euler(A, B, C)) as GameObject;
nextShootSec = Time.time + 0.6f;
}
}
( “A, B, C - Be replaced, depending on the situation”)