diff --git a/RunningLateGame/Assets/Scripts/AI.cs b/RunningLateGame/Assets/Scripts/AI.cs index 57c464d..7fc0f8f 100644 --- a/RunningLateGame/Assets/Scripts/AI.cs +++ b/RunningLateGame/Assets/Scripts/AI.cs @@ -1,7 +1,7 @@ /* - * author: lin hengrui ryan + * author: ryan lin * date: 30/7/2024 - * description: AI code for the different AI in the game + * description: 'standard' npc ai behaviour */ using System.Collections; @@ -9,6 +9,9 @@ using UnityEngine.AI; using Random = System.Random; +/// +/// TODO +/// public class AI : MonoBehaviour { /// @@ -16,7 +19,6 @@ public class AI : MonoBehaviour /// private static readonly int AnimatorSpeed = Animator.StringToHash("Speed"); - /// /// set the layers the AI can be on /// diff --git a/RunningLateGame/Assets/Scripts/AiCar.cs b/RunningLateGame/Assets/Scripts/AiCar.cs index fc40a6c..332785a 100644 --- a/RunningLateGame/Assets/Scripts/AiCar.cs +++ b/RunningLateGame/Assets/Scripts/AiCar.cs @@ -1,24 +1,96 @@ -using System.Collections; +/* + * author: ryan lin + * date: 30/7/2024 + * description: vehicular ai behaviour + */ + +using System.Collections; using UnityEngine; +/// +/// TODO +/// public class AICar : MonoBehaviour { + /// + /// TODO + /// [SerializeField] private Transform carPosition; + + /// + /// TODO + /// [SerializeField] private float stoppingDistance; + + /// + /// TODO + /// [SerializeField] private float slowingSpeed; + + /// + /// TODO + /// [SerializeField] private float slowingDistance; + + /// + /// TODO + /// [SerializeField] private float reverseDist; - private string _currentState; - private string _nextState; + + /// + /// TODO + /// private float _accelerationInput; - private CarController _car; + + /// + /// TODO + /// private float _angularDirection; + + /// + /// TODO + /// + private CarController _car; + + /// + /// TODO + /// + private string _currentState; + + /// + /// TODO + /// private Vector3 _dirToMove; + + /// + /// TODO + /// private float _distanceToTarget; + + /// + /// TODO + /// private Transform _driveTarget; + + /// + /// TODO + /// + // FIXME: use an enum or something + private string _nextState; + + /// + /// TODO + /// private float _turnInput; + + /// + /// TODO + /// private float _verticalDirection; + /// + /// TODO + /// private void Awake() { var hasChild = false; @@ -44,16 +116,25 @@ private void Awake() ChangeState(); } + /// + /// TODO + /// private void Update() { _currentState = _nextState; } + /// + /// TODO + /// private void ChangeState() { StartCoroutine(_currentState); } + /// + /// TODO + /// private void Steering() { _angularDirection = Vector3.SignedAngle(carPosition.transform.forward, @@ -64,34 +145,36 @@ private void Steering() _turnInput = 1; } + /// + /// TODO + /// private IEnumerator Stopped() { - while (_currentState == "Stopped") { - _distanceToTarget=Vector3.Distance(carPosition.position, _driveTarget.position); + _distanceToTarget = Vector3.Distance(carPosition.position, _driveTarget.position); _car.braking = true; _accelerationInput = 0f; _turnInput = 0f; - if (_distanceToTarget>stoppingDistance) - { - _nextState = "Slowed"; - } + if (_distanceToTarget > stoppingDistance) _nextState = "Slowed"; yield return new WaitForSeconds(1); } + ChangeState(); } + /// + /// TODO + /// private IEnumerator Slowed() { _car.braking = false; while (_currentState == "Slowed") { - _verticalDirection = Vector3.Dot(carPosition.transform.forward, (_driveTarget.position - carPosition.transform.position).normalized); _distanceToTarget = Vector3.Distance(carPosition.position, _driveTarget.position); - if (_verticalDirection>0) + if (_verticalDirection > 0) { if (carPosition.GetComponent().velocity.magnitude > slowingSpeed) _accelerationInput = -1; @@ -105,15 +188,19 @@ private IEnumerator Slowed() else _accelerationInput = 1; } - + Steering(); SlowedCheck(); _car.SetInputs(_accelerationInput, _turnInput); yield return new WaitForEndOfFrame(); } + ChangeState(); } + /// + /// TODO + /// private IEnumerator Driving() { _car.braking = false; @@ -122,30 +209,25 @@ private IEnumerator Driving() _verticalDirection = Vector3.Dot(carPosition.transform.forward, (_driveTarget.position - carPosition.transform.position).normalized); _distanceToTarget = Vector3.Distance(carPosition.position, _driveTarget.position); - _accelerationInput = 1; - - + _accelerationInput = 1; + Steering(); if (_distanceToTarget < slowingDistance) _nextState = "Slowed"; _car.SetInputs(_accelerationInput, _turnInput); yield return new WaitForEndOfFrame(); } + ChangeState(); } + /// + /// TODO + /// private void SlowedCheck() { - if (_distanceToTarget < stoppingDistance) - { - _nextState = "Stopped"; - } + if (_distanceToTarget < stoppingDistance) _nextState = "Stopped"; if (_distanceToTarget > slowingDistance) _nextState = "Driving"; - - - - - } } \ No newline at end of file diff --git a/RunningLateGame/Assets/Scripts/AiManager.cs b/RunningLateGame/Assets/Scripts/AiManager.cs index ccbacde..600e5e0 100644 --- a/RunningLateGame/Assets/Scripts/AiManager.cs +++ b/RunningLateGame/Assets/Scripts/AiManager.cs @@ -1,32 +1,71 @@ +/* + * author: ryan lin + * date: TODO + * description: TODO + */ + using System.Collections; using UnityEngine; -public class AiManager : MonoBehaviour +public class AIManager : MonoBehaviour { + /// + /// TODO + /// public Transform player; + + /// + /// TODO + /// public float cullingDistance; + + /// + /// TODO + /// public GameObject aiPrefab; - private GameObject[] _ais; - private float _distance; + + /// + /// TODO + /// public int maxAI; + + /// + /// TODO + /// + private GameObject[] _ais; + + /// + /// TODO + /// + private float _distance; + + /// + /// TODO + /// private void Start() { StartCoroutine(Manager()); } + /// + /// TODO + /// private void OnDrawGizmos() { Gizmos.color = Color.yellow; Gizmos.DrawWireSphere(player.position, cullingDistance); } - // ReSharper disable Unity.PerformanceAnalysis + /// + /// TODO + /// private IEnumerator Manager() { while (true) { + // FIXME: feels weird _ais = GameObject.FindGameObjectsWithTag("AIs"); - if (_ais.Length < maxAI ) + if (_ais.Length < maxAI) { var instance = Instantiate(aiPrefab, gameObject.transform); } @@ -38,6 +77,7 @@ private IEnumerator Manager() } yield return new WaitForSeconds(1); - } + } + // TODO: iterator never returns? is this intended? } } \ No newline at end of file diff --git a/RunningLateGame/Assets/Scripts/CarController.cs b/RunningLateGame/Assets/Scripts/CarController.cs index 31a6596..d3efbff 100644 --- a/RunningLateGame/Assets/Scripts/CarController.cs +++ b/RunningLateGame/Assets/Scripts/CarController.cs @@ -1,25 +1,65 @@ +/* + * author: ryan lin + * date: TODO + * description: TODO + */ + using System; using System.Collections.Generic; using UnityEngine; +/// +/// TODO +/// public class CarController : MonoBehaviour { + /// + /// TODO + /// public enum Axel { Front, Rear } + /// + /// TODO + /// public float acceleration; + + /// + /// TODO + /// public float turnAngle; + + /// + /// TODO + /// public List wheels; + /// + /// TODO + /// public float brakeForce; + + /// + /// TODO + /// public bool braking; + + /// + /// TODO + /// private float _currentAcceleration; + + /// + /// TODO + /// private float _currentTurn; - + /// + /// TODO + /// private void FixedUpdate() { Move(); @@ -27,18 +67,26 @@ private void FixedUpdate() Brake(); } + /// + /// TODO + /// public void SetInputs(float forwardAmount, float turnAmount) { _currentAcceleration = forwardAmount * acceleration; _currentTurn = turnAmount * turnAngle; } - + /// + /// TODO + /// public void Move() { foreach (var wheel in wheels) wheel.wheelCollider.motorTorque = _currentAcceleration; } + /// + /// TODO + /// public void Brake() { if (braking) @@ -49,6 +97,9 @@ public void Brake() wheel.wheelCollider.brakeTorque = 0f; } + /// + /// TODO + /// public void Steering() { foreach (var wheel in wheels) @@ -56,6 +107,10 @@ public void Steering() wheel.wheelCollider.steerAngle = _currentTurn; } + /// + /// TODO + /// + // NOTE: once again, why is this at the bottom lol [Serializable] public struct Wheel { diff --git a/RunningLateGame/Assets/Scripts/CommonInteractable.cs b/RunningLateGame/Assets/Scripts/CommonInteractable.cs new file mode 100644 index 0000000..326db69 --- /dev/null +++ b/RunningLateGame/Assets/Scripts/CommonInteractable.cs @@ -0,0 +1,20 @@ +/* + * authors: ryan lin, mark joshwel + * date: 10/8/2024 + * description: common interactable behaviour class + */ + +using UnityEngine; + +/// +/// TODO +/// +public class CommonInteractable : MonoBehaviour +{ + /// + /// TODO + /// + public virtual void Interact() + { + } +} \ No newline at end of file diff --git a/RunningLateGame/Assets/Scripts/Interactable.cs.meta b/RunningLateGame/Assets/Scripts/CommonInteractable.cs.meta similarity index 100% rename from RunningLateGame/Assets/Scripts/Interactable.cs.meta rename to RunningLateGame/Assets/Scripts/CommonInteractable.cs.meta diff --git a/RunningLateGame/Assets/Scripts/Door.cs b/RunningLateGame/Assets/Scripts/Door.cs index 808cdce..ec00399 100644 --- a/RunningLateGame/Assets/Scripts/Door.cs +++ b/RunningLateGame/Assets/Scripts/Door.cs @@ -1,29 +1,64 @@ +/* + * author: ryan lin + * date: 8/8/2024 + * description: door interaction and animation + */ + using System; using System.Collections; using System.Collections.Generic; using UnityEngine; -public class Door : Interactable +/// +/// TODO +/// +public class Door : CommonInteractable { + /// + /// TODO + /// public enum DoorType { Sliding, Rotating } + /// + /// TODO + /// public List doors; + /// + /// TODO + /// public float duration; + + /// + /// TODO + /// public AnimationCurve curve; + + /// + /// TODO + /// private bool _isOpen; + + /// + /// TODO + /// private bool _opening; - + /// + /// TODO + /// public override void Interact() { if (!_opening) StartCoroutine(OpenDoor()); } + /// + /// TODO + /// private IEnumerator OpenDoor() { _opening = true; @@ -62,19 +97,19 @@ private IEnumerator OpenDoor() currentDuration = 0; _opening = false; if (_isOpen) - { _isOpen = false; - } else - { _isOpen = true; - } } yield return new WaitForEndOfFrame(); } } + /// + /// TODO + /// + // NOTE: why is this at the bottom lol [Serializable] public struct DoorInput { diff --git a/RunningLateGame/Assets/Scripts/Interactable.cs b/RunningLateGame/Assets/Scripts/Interactable.cs deleted file mode 100644 index dd8cb02..0000000 --- a/RunningLateGame/Assets/Scripts/Interactable.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class Interactable : MonoBehaviour -{ - public virtual void Interact() - { - - } -} diff --git a/RunningLateGame/Assets/Scripts/Player.cs b/RunningLateGame/Assets/Scripts/Player.cs index 0cb8044..a6a9220 100644 --- a/RunningLateGame/Assets/Scripts/Player.cs +++ b/RunningLateGame/Assets/Scripts/Player.cs @@ -1,17 +1,54 @@ +/* + * author: ryan lin + * date: 8/8/2024 + * description: TODO + */ + using UnityEngine; - +/// +/// TODO +/// public class Player : MonoBehaviour { - public RaycastHit Hit; + /// + /// TODO + /// [SerializeField] private Transform playerPosition; + + /// + /// TODO + /// [SerializeField] private float seeDistance; - private Interactable _currentInteractable; - private bool _active; - private bool _raycast; + + /// + /// TODO + /// public LayerMask raycastLayers; + + /// + /// TODO + /// + private bool _active; + + /// + /// TODO + /// + private CommonInteractable _currentInteractable; + + /// + /// TODO + /// + private bool _raycast; + + /// + /// TODO + /// + public RaycastHit Hit; - + /// + /// TODO + /// private void Update() { _raycast = Physics.Raycast( @@ -28,15 +65,14 @@ private void Update() ); } + /// + /// TODO + /// private void OnAction() { Debug.Log("test"); if (_raycast) - { if (Hit.transform.CompareTag("Interactable")) - { - Hit.transform.GetComponent().Interact(); - } - } + Hit.transform.GetComponent().Interact(); } } \ No newline at end of file