campfire/Assets/Scripts/StickSpawner.cs

49 lines
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StickSpawner : MonoBehaviour {
public GameObject StickPrefab;
public float StickSpawnChance = 0.5f;
public float StickSpawnMinDistance = 5f;
public float StickSpawnAngle = 70f;
public float StickSpawnTimer = 2f;
private GameObject Player;
private float LastSpawn;
private bool CanSpawnNew = true;
private Item SpawnedStick = null;
void Awake() {
Player = GameObject.FindGameObjectWithTag("Player");
LastSpawn = Time.time + StickSpawnTimer * Random.value;
}
void Update() {
if (!CanSpawnNew) {
if (SpawnedStick.Grabbed) {
CanSpawnNew = true;
} else {
return;
}
}
if (Time.time > LastSpawn + StickSpawnTimer) {
LastSpawn = Time.time;
} else {
return;
}
var dir = transform.position - Player.transform.position;
if ((Vector3.Angle(Player.transform.forward, dir) > StickSpawnAngle) || dir.magnitude > StickSpawnMinDistance && Random.value <= StickSpawnChance) {
CanSpawnNew = false;
var Stick = GameObject.Instantiate(StickPrefab, transform.position + Vector3.up * 2, Random.rotation);
SpawnedStick = Stick.GetComponent<Item>();
}
}
}