Switch back to sphere casting
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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<CharacterController>();
|
||||
_caster = _controller.GetComponent<RayCaster>();
|
||||
_animator = GetComponent<Animator>();
|
||||
_playerState = GetComponent<PlayerState>();
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
30
Assets/Scripts/Player/PlayerState.cs
Normal file
30
Assets/Scripts/Player/PlayerState.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user