using System;
using System.Collections;
using System.Collections.Generic;
using PlayerInput;
using UnityEngine;
[SelectionBase]
public class PlayerController : MonoBehaviour {
public float Speed = 5;
public float Gravity = 7;
private CharacterController charC;
private AnimationHandler anim;
// Use this for initialization
void Start () {
charC = GetComponent<CharacterController>();
anim = GetComponent<AnimationHandler>();
}
private float velY = 0;
// Update is called once per frame
void Update () {
Vector3 dir = new Vector3();
if (input != null)
{
if (charC.isGrounded)
{
dir.x = input.Axis(InputSource<PlayerController>.InputAxis.MoveX);
dir.z = input.Axis(InputSource<PlayerController>.InputAxis.MoveY);
if (dir.magnitude > 0.3f)
{
dir.Normalize();
dir *= Speed;
float angle = Mathf.Atan2(dir.z, dir.x);
if (angle < 0) angle += Mathf.PI * 2;
if (angle < Mathf.PI / 2.0f) anim.SetDir(AnimationHandler.Direction.UpRight);
if (angle < Mathf.PI && angle >= Mathf.PI / 2.0f) anim.SetDir(AnimationHandler.Direction.UpLeft);
if (angle < Mathf.PI * 3.0f / 2.0f && angle >= Mathf.PI) anim.SetDir(AnimationHandler.Direction.DownLeft);
if (angle >= Mathf.PI * 3.0f / 2.0f) anim.SetDir(AnimationHandler.Direction.DownRight);
//Debug.Log("ANGLE: " + angle);
}
else
{
dir.x = 0;
dir.z = 0;
}
}
}
dir.y = velY;
velY -= Gravity * Time.deltaTime;
gameObject.layer = LayerMask.NameToLayer("player_controller_no_collide");
charC.Move(dir * Time.deltaTime);
gameObject.layer = LayerMask.NameToLayer("player_controller");
if (charC.isGrounded)
{
velY = 0;
}
}
private InputSource<PlayerController> input = null;
private InputManager.PlayerInfo playerInfo;
public void SetInput(InputSource<PlayerController> newPlayerInput, InputManager.PlayerInfo playerInfo)
{
this.input = newPlayerInput;
this.playerInfo = playerInfo;
}
}