using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using FishNet.Connection;
using FishNet.Object;
public class PlayerController : NetworkBehaviour
{
[Header("Movement")]
public float speed = 5f;
public float jumpPower = 4f;
public float gravity = 9.8f;
public float sens = 30f;
private float yVelo;
private Camera playerCam;
private CharacterController controller;
private Player.OnFootActions onFootActions;
private void Awake()
{
onFootActions = new Player().OnFoot;
}
private void OnEnable()
{
onFootActions.Enable();
}
private void OnDisable()
{
onFootActions.Disable();
}
public override void OnStartClient()
{
base.OnStartClient();
if (base.IsOwner)
{
playerCam = Camera.main;
playerCam.transform.position = new Vector3(this.transform.position.x, this.transform.position.y + 0.6f, this.transform.position.z);
playerCam.transform.parent = this.transform;
} else
{
gameObject.GetComponent<PlayerController>().enabled = false;
}
}
private void Start()
{
controller = this.GetComponent<CharacterController>();
}
private void Update()
{
Vector2 moveVector = onFootActions.Move.ReadValue<Vector2>();
Move(moveVector);
yVelo -= gravity * Time.deltaTime;
}
private void Move(Vector2 moveVector)
{
Vector3 camForwards = playerCam.transform.forward;
Vector3 camRight = playerCam.transform.right;
camForwards.y = 0f;
camRight.y = 0f;
Vector3 moveDir = moveVector.y * camForwards + moveVector.x * camRight;
moveDir *= speed * Time.deltaTime;
if (controller.isGrounded & yVelo < 0)
{
yVelo = -2f;
}
controller.Move(moveDir);
}
private void Jump()
{
if (controller.isGrounded)
{
yVelo = Mathf.Sqrt(jumpPower * 3 * gravity);
}
}
private void Look(Vector2 lookVector)
{
controller.transform.Rotate(Vector3.up * lookVector.y);
}
}