50 lines
1.4 KiB
C#
50 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) {
|
|
Debug.Log("Spawned");
|
|
CanSpawnNew = false;
|
|
var Stick = GameObject.Instantiate(StickPrefab, transform.position + Vector3.up * 2, Random.rotation);
|
|
SpawnedStick = Stick.GetComponent<Item>();
|
|
}
|
|
|
|
}
|
|
}
|