59 lines
1.5 KiB
C#
59 lines
1.5 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
public class KitchenGun : MonoBehaviour
|
|
{
|
|
// The shot projectiles
|
|
public GameObject projectilePrefab;
|
|
// Time between shots, game needs to be restarted to take effect
|
|
public float shotInterval = 1f;
|
|
// Speed of projectiles
|
|
public Vector2 shotSpeed = new Vector2(1f, 0f);
|
|
// Smallest step size for shot speed
|
|
private short shotSpeedStepSize = 50;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
InvokeRepeating("RecurringBang",0f,shotInterval);
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
void RecurringBang()
|
|
{
|
|
StartCoroutine("Bang");
|
|
}
|
|
|
|
private IEnumerator Bang()
|
|
{
|
|
Transform t = transform;
|
|
Vector3 position = t.position;
|
|
|
|
// create projectile
|
|
GameObject projectile = Instantiate(projectilePrefab,
|
|
position,
|
|
t.rotation);
|
|
// determine correct force vector
|
|
Vector2 force = shotSpeed;
|
|
if (t.localScale.x < 0) {
|
|
force *= -1;
|
|
}
|
|
|
|
force *= shotSpeedStepSize;
|
|
|
|
// add force to projectile
|
|
Rigidbody2D pBody = projectile.GetComponent<Rigidbody2D>();
|
|
pBody.AddRelativeForce(force);
|
|
|
|
yield return new WaitForSeconds(shotInterval);
|
|
Debug.Log("Bang!");
|
|
|
|
Destroy(projectile);
|
|
}
|
|
}
|