Switch back to sphere casting

This commit is contained in:
2022-08-18 12:06:09 -07:00
parent 6c513aafc7
commit 5c88184fec
6 changed files with 54 additions and 30 deletions

View File

@@ -869,7 +869,7 @@ GameObject:
- component: {fileID: 8519787470769432157} - component: {fileID: 8519787470769432157}
- component: {fileID: 7831886137308850988} - component: {fileID: 7831886137308850988}
- component: {fileID: 7831886137308850989} - component: {fileID: 7831886137308850989}
- component: {fileID: 5109351175705582191} - component: {fileID: 9124306867817734687}
m_Layer: 3 m_Layer: 3
m_Name: Player m_Name: Player
m_TagString: Player m_TagString: Player
@@ -946,7 +946,8 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
rayCastDistance: 3 rayCastDistance: 3
rayCastAngle: 15 rayCastAngle: 30
sphereRadius: 0.5
--- !u!114 &7831886137308850989 --- !u!114 &7831886137308850989
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -961,7 +962,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
Speed: 12.5 Speed: 12.5
RotateSpeed: 720 RotateSpeed: 720
--- !u!114 &5109351175705582191 --- !u!114 &9124306867817734687
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}

View File

@@ -1,27 +1,28 @@
using UnityEngine; using Scampz.GameJam.Assets.Scripts.Player;
using UnityEngine;
namespace Scampz.GameJam.Assets.Scripts namespace Scampz.GameJam.Assets.Scripts
{ {
public class CharacterInputController : MonoBehaviour public class CharacterInputController : MonoBehaviour
{ {
private CharacterController _controller; private CharacterController _controller;
private RayCaster _caster;
public float Speed = 10f; public float Speed = 10f;
public float RotateSpeed = 720.0f; public float RotateSpeed = 720.0f;
private Animator _animator; private Animator _animator;
private PlayerState _playerState;
private void Start() private void Start()
{ {
_controller = GetComponent<CharacterController>(); _controller = GetComponent<CharacterController>();
_caster = _controller.GetComponent<RayCaster>();
_animator = GetComponent<Animator>(); _animator = GetComponent<Animator>();
_playerState = GetComponent<PlayerState>();
} }
void Update() void Update()
{ {
var direction = new Vector3(Input.GetAxisRaw(InputOptions.Horizontal), 0, Input.GetAxisRaw(InputOptions.Vertical)).normalized; var direction = new Vector3(Input.GetAxisRaw(InputOptions.Horizontal), 0, Input.GetAxisRaw(InputOptions.Vertical)).normalized;
if (_caster.IsWithinBounds()) if (_playerState.CanMove)
_controller.SimpleMove(-direction * Speed); _controller.SimpleMove(-direction * Speed);
if (direction != Vector3.zero) if (direction != Vector3.zero)

View File

@@ -8,17 +8,30 @@ namespace Scampz.GameJam.Assets.Scripts
private float rayCastDistance = 1f; private float rayCastDistance = 1f;
[SerializeField] [SerializeField]
private float rayCastAngle = 45f; 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() public bool IsWithinBounds()
{ {
var offsetAngle = Quaternion.AngleAxis(rayCastAngle, transform.right); 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() private void OnDrawGizmosSelected()
{ {
Gizmos.color = Color.red;
var offsetAngle = Quaternion.AngleAxis(rayCastAngle, transform.right); 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);
} }
} }
} }

View File

@@ -1,21 +0,0 @@
using UnityEngine;
namespace Scampz.GameJam.Assets.Scripts.Player
{
public class Player : MonoBehaviour
{
private Animator _animator;
private void Start()
{
_animator = GetComponent<Animator>();
}
private void Update()
{
var player = GameObject.FindGameObjectWithTag("Player");
var cc = player.GetComponent<CharacterController>();
_animator.SetFloat("Speed", cc.velocity.magnitude);
}
}
}

View File

@@ -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<Animator>();
_rayCaster = GetComponent<RayCaster>();
_player = GameObject.FindGameObjectWithTag("Player");
_characterController = _player.GetComponent<CharacterController>();
}
private void Update()
{
_animator.SetFloat("Speed", _characterController.velocity.magnitude);
_canMove = _rayCaster.IsWithinBounds();
}
public bool CanMove => _canMove;
}
}