Files
Inter-Face-Off/Assets/Scripts/DevPlayerController.cs

89 lines
2.6 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace InterfaceOff.WorldScene
{
[System.Serializable] public struct PlayerFrameInfo
{
public Vector3 Position;
public Vector2 Rotation;
public bool ShootGun;
public int FrameIndex;
}
[System.Serializable] public struct PlayerFrameInfoArray
{
public PlayerFrameInfo[] FrameInfo;
}
public class DevPlayerController : MonoBehaviour
{
private CharacterController Controller;
public float PlayerSpeed = 5f;
public float CamSens = 2.5f;
public Transform CameraPivot;
private float MousePitch;
private float MouseYaw = 90;
private int CurrentFrameIndex;
private readonly List<PlayerFrameInfo> FrameInfo = new();
private void Awake()
{
Controller = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void OnDestroy()
{
PlayerFrameInfoArray arr = new()
{
FrameInfo = FrameInfo.ToArray()
};
string json = JsonUtility.ToJson(arr, prettyPrint: true);
System.IO.File.WriteAllText(Application.persistentDataPath + "/playerframe.json", json);
Debug.Log("Dumped");
}
private void FixedUpdate()
{
PlayerFrameInfo current = new()
{
Position = transform.position,
Rotation = new Vector2(MousePitch, MouseYaw),
ShootGun = Input.GetMouseButton(0),
FrameIndex = CurrentFrameIndex
};
FrameInfo.Add(current);
CurrentFrameIndex++;
}
private void Update()
{
/* Player movement */
float mouseX = Input.GetAxisRaw("Mouse X") * CamSens * 100f * Time.deltaTime;
float mouseY = Input.GetAxisRaw("Mouse Y") * CamSens * 100f * Time.deltaTime;
MouseYaw += mouseX;
transform.rotation = Quaternion.Euler(0f, MouseYaw, 0f);
MousePitch -= mouseY;
MousePitch = Mathf.Clamp(MousePitch, -85f, 85f);
CameraPivot.localRotation = Quaternion.Euler(MousePitch, 0f, 0f);
/* WASD movement */
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
Controller.Move(Time.deltaTime * PlayerSpeed * move.normalized);
}
}
}