mirror of
https://github.com/ConjureETS/PillowFight.git
synced 2026-03-24 09:00:58 +00:00
124 lines
3.0 KiB
C#
124 lines
3.0 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class Bed : MonoBehaviour
|
|
{
|
|
// Values to balance out in playtesting
|
|
public float MinSpawnDelay = 7f;
|
|
public float MaxSpawnDelay = 15f;
|
|
|
|
public Pillow PillowObject;
|
|
public Vector3 RelativePosition = new Vector3(1.6f, 0.5f, 0f);
|
|
|
|
private bool _isTaken;
|
|
private Pillow _currentPillow;
|
|
private float _elapsedTime;
|
|
|
|
private float _nextSpawnDelay;
|
|
|
|
public bool IsTaken
|
|
{
|
|
get { return _isTaken; }
|
|
}
|
|
|
|
void Awake()
|
|
{
|
|
SpawnPillow();
|
|
|
|
_nextSpawnDelay = GetNextSpawnDelay();
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (_currentPillow == null)
|
|
{
|
|
_elapsedTime += Time.deltaTime;
|
|
|
|
if (_elapsedTime >= _nextSpawnDelay)
|
|
{
|
|
_elapsedTime = 0f;
|
|
SpawnPillow();
|
|
_nextSpawnDelay = GetNextSpawnDelay();
|
|
}
|
|
}
|
|
else if (_currentPillow.IsOwned)
|
|
{
|
|
_currentPillow = null;
|
|
_elapsedTime = 0f;
|
|
}
|
|
}
|
|
|
|
private void SpawnPillow()
|
|
{
|
|
_currentPillow = Instantiate(PillowObject, transform.position, PillowObject.transform.rotation) as Pillow;
|
|
|
|
Vector3 rot = _currentPillow.transform.eulerAngles;
|
|
rot.y = transform.eulerAngles.y - 90f;
|
|
|
|
_currentPillow.transform.eulerAngles = rot;
|
|
|
|
Vector3 pos = new Vector3();
|
|
|
|
if (Mathf.Approximately(transform.eulerAngles.y, 0f))
|
|
{
|
|
pos = RelativePosition;
|
|
}
|
|
else if (Mathf.Approximately(transform.eulerAngles.y, 90f))
|
|
{
|
|
pos = new Vector3(-RelativePosition.z, RelativePosition.y, -RelativePosition.x);
|
|
}
|
|
else if (Mathf.Approximately(transform.eulerAngles.y, 180f))
|
|
{
|
|
pos = new Vector3(-RelativePosition.x, RelativePosition.y, -RelativePosition.z);
|
|
}
|
|
else if (Mathf.Approximately(transform.eulerAngles.y, 270f))
|
|
{
|
|
pos = new Vector3(RelativePosition.z, RelativePosition.y, RelativePosition.x);
|
|
}
|
|
|
|
_currentPillow.transform.position += pos;
|
|
}
|
|
|
|
private float GetNextSpawnDelay()
|
|
{
|
|
return UnityEngine.Random.Range(MinSpawnDelay, MaxSpawnDelay);
|
|
}
|
|
|
|
public void Take()
|
|
{
|
|
_isTaken = true;
|
|
}
|
|
|
|
public void Leave()
|
|
{
|
|
_isTaken = false;
|
|
}
|
|
|
|
/*
|
|
void OnCollisionEnter(Collision col)
|
|
{
|
|
// TODO: Check if the pillow is owned (otherwise it means the collision is only a player walking by)
|
|
if (col.gameObject.tag == "Pillow" && _currentPillow == null)
|
|
{
|
|
_currentPillow = col.gameObject.GetComponent<Pillow>();
|
|
}
|
|
}
|
|
|
|
void OnCollisionExit(Collision col)
|
|
{
|
|
if (_currentPillow != null && col.gameObject == _currentPillow.gameObject)
|
|
{
|
|
_currentPillow = null;
|
|
}
|
|
}*/
|
|
|
|
/*
|
|
void OnCollisionStay(Collision col)
|
|
{
|
|
if (col.gameObject.tag == "Player")
|
|
{
|
|
|
|
}
|
|
}*/
|
|
}
|