拍摄延迟(Unity 和 C#)
Delay in shoot (Unity and C#)
我在Unity里做拍摄,我想做的是做一点延时,比如:能每0.5秒拍一次。检查脚本,我希望我的子弹预制件在 0.5 秒延迟后出现(实例化)。
private Rigidbody2D rb2d;
private float h = 0.0f;
public float Speed;
public Transform firePoint;
public GameObject bulletPrefab;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
h = Input.GetAxisRaw("Horizontal");
if (h != 0.0f)
{
rb2d.velocity = new Vector2(h * Speed, rb2d.velocity.y);
}
if (h == 0.0f)
{
rb2d.velocity = new Vector2(0, rb2d.velocity.y);
}
if (Input.GetKeyDown(KeyCode.Space))
{
Shoot();
}
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
这应该会带您走向正确的方向,当然,这只是其中一种方法。
你可以改变fireDelay
来改变射速。
private Rigidbody2D rb2d;
private float h = 0.0f;
public float Speed;
public Transform firePoint;
public GameObject bulletPrefab;
float fireElapsedTime = 0;
public float fireDelay = 0.2f;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
h = Input.GetAxisRaw("Horizontal");
if (h != 0.0f)
{
rb2d.velocity = new Vector2(h * Speed, rb2d.velocity.y);
}
if (h == 0.0f)
{
rb2d.velocity = new Vector2(0, rb2d.velocity.y);
}
fireElapsedTime += Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space) && fireElapsedTime >= fireDelay)
{
fireElapsedTime = 0;
Shoot();
}
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
我在Unity里做拍摄,我想做的是做一点延时,比如:能每0.5秒拍一次。检查脚本,我希望我的子弹预制件在 0.5 秒延迟后出现(实例化)。
private Rigidbody2D rb2d;
private float h = 0.0f;
public float Speed;
public Transform firePoint;
public GameObject bulletPrefab;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
h = Input.GetAxisRaw("Horizontal");
if (h != 0.0f)
{
rb2d.velocity = new Vector2(h * Speed, rb2d.velocity.y);
}
if (h == 0.0f)
{
rb2d.velocity = new Vector2(0, rb2d.velocity.y);
}
if (Input.GetKeyDown(KeyCode.Space))
{
Shoot();
}
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
这应该会带您走向正确的方向,当然,这只是其中一种方法。
你可以改变fireDelay
来改变射速。
private Rigidbody2D rb2d;
private float h = 0.0f;
public float Speed;
public Transform firePoint;
public GameObject bulletPrefab;
float fireElapsedTime = 0;
public float fireDelay = 0.2f;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
h = Input.GetAxisRaw("Horizontal");
if (h != 0.0f)
{
rb2d.velocity = new Vector2(h * Speed, rb2d.velocity.y);
}
if (h == 0.0f)
{
rb2d.velocity = new Vector2(0, rb2d.velocity.y);
}
fireElapsedTime += Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space) && fireElapsedTime >= fireDelay)
{
fireElapsedTime = 0;
Shoot();
}
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}