2023-06-19 01:52:18 +02:00

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);
}
}