diff --git a/Assets/Player/Player.prefab b/Assets/Player/Player.prefab index af0b01c..721bfc0 100644 --- a/Assets/Player/Player.prefab +++ b/Assets/Player/Player.prefab @@ -869,7 +869,7 @@ GameObject: - component: {fileID: 8519787470769432157} - component: {fileID: 7831886137308850988} - component: {fileID: 7831886137308850989} - - component: {fileID: 5109351175705582191} + - component: {fileID: 9124306867817734687} m_Layer: 3 m_Name: Player m_TagString: Player @@ -946,7 +946,8 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: rayCastDistance: 3 - rayCastAngle: 15 + rayCastAngle: 30 + sphereRadius: 0.5 --- !u!114 &7831886137308850989 MonoBehaviour: m_ObjectHideFlags: 0 @@ -961,7 +962,7 @@ MonoBehaviour: m_EditorClassIdentifier: Speed: 12.5 RotateSpeed: 720 ---- !u!114 &5109351175705582191 +--- !u!114 &9124306867817734687 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} diff --git a/Assets/Scripts/Input/CharacterInputController.cs b/Assets/Scripts/Input/CharacterInputController.cs index 0fd3303..1316602 100644 --- a/Assets/Scripts/Input/CharacterInputController.cs +++ b/Assets/Scripts/Input/CharacterInputController.cs @@ -1,27 +1,28 @@ -using UnityEngine; +using Scampz.GameJam.Assets.Scripts.Player; +using UnityEngine; namespace Scampz.GameJam.Assets.Scripts { public class CharacterInputController : MonoBehaviour { private CharacterController _controller; - private RayCaster _caster; public float Speed = 10f; public float RotateSpeed = 720.0f; private Animator _animator; + private PlayerState _playerState; private void Start() { _controller = GetComponent(); - _caster = _controller.GetComponent(); _animator = GetComponent(); + _playerState = GetComponent(); } void Update() { var direction = new Vector3(Input.GetAxisRaw(InputOptions.Horizontal), 0, Input.GetAxisRaw(InputOptions.Vertical)).normalized; - if (_caster.IsWithinBounds()) + if (_playerState.CanMove) _controller.SimpleMove(-direction * Speed); if (direction != Vector3.zero) diff --git a/Assets/Scripts/Input/RayCaster.cs b/Assets/Scripts/Input/RayCaster.cs index 3865d7a..7cd20b0 100644 --- a/Assets/Scripts/Input/RayCaster.cs +++ b/Assets/Scripts/Input/RayCaster.cs @@ -8,17 +8,30 @@ namespace Scampz.GameJam.Assets.Scripts private float rayCastDistance = 1f; [SerializeField] private float rayCastAngle = 45f; + [SerializeField] + private float sphereRadius = 2f; + + //public bool IsWithinBounds() + //{ + // var offsetAngle = Quaternion.AngleAxis(rayCastAngle, transform.right); + // return Physics.Raycast(transform.position, offsetAngle * transform.forward); + //} public bool IsWithinBounds() { var offsetAngle = Quaternion.AngleAxis(rayCastAngle, transform.right); - return Physics.Raycast(transform.position, offsetAngle * transform.forward); + var ray = new Ray(transform.position, offsetAngle * transform.forward); + return Physics.SphereCast(ray, sphereRadius, rayCastDistance); } private void OnDrawGizmosSelected() { + Gizmos.color = Color.red; var offsetAngle = Quaternion.AngleAxis(rayCastAngle, transform.right); - Debug.DrawRay(transform.position, offsetAngle * transform.forward * rayCastDistance); + var direction = offsetAngle * transform.forward; + Debug.DrawLine(transform.position, transform.position + direction * rayCastDistance); + Gizmos.DrawWireSphere(transform.position + direction * rayCastDistance, sphereRadius); + } } } diff --git a/Assets/Scripts/Player/Player.cs b/Assets/Scripts/Player/Player.cs deleted file mode 100644 index f6a3a51..0000000 --- a/Assets/Scripts/Player/Player.cs +++ /dev/null @@ -1,21 +0,0 @@ -using UnityEngine; - -namespace Scampz.GameJam.Assets.Scripts.Player -{ - public class Player : MonoBehaviour - { - private Animator _animator; - - private void Start() - { - _animator = GetComponent(); - } - - private void Update() - { - var player = GameObject.FindGameObjectWithTag("Player"); - var cc = player.GetComponent(); - _animator.SetFloat("Speed", cc.velocity.magnitude); - } - } -} diff --git a/Assets/Scripts/Player/PlayerState.cs b/Assets/Scripts/Player/PlayerState.cs new file mode 100644 index 0000000..64fb31a --- /dev/null +++ b/Assets/Scripts/Player/PlayerState.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace Scampz.GameJam.Assets.Scripts.Player +{ + public class PlayerState : MonoBehaviour + { + private Animator _animator; + private RayCaster _rayCaster; + + private bool _canMove; + private GameObject _player; + private CharacterController _characterController; + + private void Start() + { + _animator = GetComponent(); + _rayCaster = GetComponent(); + _player = GameObject.FindGameObjectWithTag("Player"); + _characterController = _player.GetComponent(); + } + + private void Update() + { + _animator.SetFloat("Speed", _characterController.velocity.magnitude); + _canMove = _rayCaster.IsWithinBounds(); + } + + public bool CanMove => _canMove; + } +} diff --git a/Assets/Scripts/Player/Player.cs.meta b/Assets/Scripts/Player/PlayerState.cs.meta similarity index 100% rename from Assets/Scripts/Player/Player.cs.meta rename to Assets/Scripts/Player/PlayerState.cs.meta