mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
CharacterSelection: Removed PlayerControllerScript
- No longer used
This commit is contained in:
parent
fb50bf252b
commit
8df5ec087f
@ -1,188 +0,0 @@
|
||||
using UnityEngine;
|
||||
using Mirror;
|
||||
|
||||
namespace Mirror.Examples.CharacterSelection
|
||||
{
|
||||
[RequireComponent(typeof(CapsuleCollider))]
|
||||
[RequireComponent(typeof(CharacterController))]
|
||||
[RequireComponent(typeof(NetworkTransformUnreliable))]
|
||||
[RequireComponent(typeof(Rigidbody))]
|
||||
public class PlayerControllerScript : NetworkBehaviour
|
||||
{
|
||||
public enum GroundState : byte { Jumping, Falling, Grounded }
|
||||
|
||||
[Header("Avatar Components")]
|
||||
public CharacterController characterController;
|
||||
|
||||
[Header("Movement")]
|
||||
[Range(1, 20)]
|
||||
public float moveSpeedMultiplier = 8f;
|
||||
|
||||
[Header("Turning")]
|
||||
[Range(1f, 200f)]
|
||||
public float maxTurnSpeed = 100f;
|
||||
[Range(.5f, 5f)]
|
||||
public float turnDelta = 3f;
|
||||
|
||||
[Header("Jumping")]
|
||||
[Range(0.1f, 1f)]
|
||||
public float initialJumpSpeed = 0.2f;
|
||||
[Range(1f, 10f)]
|
||||
public float maxJumpSpeed = 5f;
|
||||
[Range(0.1f, 1f)]
|
||||
public float jumpDelta = 0.2f;
|
||||
|
||||
[Header("Diagnostics")]
|
||||
[ReadOnly, SerializeField] GroundState groundState = GroundState.Grounded;
|
||||
|
||||
[ReadOnly, SerializeField, Range(-1f, 1f)]
|
||||
float horizontal;
|
||||
[ReadOnly, SerializeField, Range(-1f, 1f)]
|
||||
float vertical;
|
||||
|
||||
[ReadOnly, SerializeField, Range(-200f, 200f)]
|
||||
float turnSpeed;
|
||||
|
||||
[ReadOnly, SerializeField, Range(-10f, 10f)]
|
||||
float jumpSpeed;
|
||||
|
||||
[ReadOnly, SerializeField, Range(-1.5f, 1.5f)]
|
||||
float animVelocity;
|
||||
|
||||
[ReadOnly, SerializeField, Range(-1.5f, 1.5f)]
|
||||
float animRotation;
|
||||
|
||||
[ReadOnly, SerializeField] Vector3Int velocity;
|
||||
[ReadOnly, SerializeField] Vector3 direction;
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
if (characterController == null)
|
||||
characterController = GetComponent<CharacterController>();
|
||||
|
||||
// Override CharacterController default values
|
||||
characterController.enabled = false;
|
||||
characterController.skinWidth = 0.02f;
|
||||
characterController.minMoveDistance = 0f;
|
||||
|
||||
GetComponent<Rigidbody>().isKinematic = true;
|
||||
|
||||
this.enabled = false;
|
||||
}
|
||||
|
||||
public override void OnStartAuthority()
|
||||
{
|
||||
characterController.enabled = true;
|
||||
this.enabled = true;
|
||||
}
|
||||
|
||||
public override void OnStopAuthority()
|
||||
{
|
||||
this.enabled = false;
|
||||
characterController.enabled = false;
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (!Application.isFocused)
|
||||
return;
|
||||
|
||||
if (!characterController.enabled)
|
||||
return;
|
||||
|
||||
HandleTurning();
|
||||
HandleJumping();
|
||||
HandleMove();
|
||||
|
||||
// Reset ground state
|
||||
if (characterController.isGrounded)
|
||||
groundState = GroundState.Grounded;
|
||||
else if (groundState != GroundState.Jumping)
|
||||
groundState = GroundState.Falling;
|
||||
|
||||
// Diagnostic velocity...FloorToInt for display purposes
|
||||
velocity = Vector3Int.FloorToInt(characterController.velocity);
|
||||
}
|
||||
|
||||
// TODO: Turning works while airborne...feature?
|
||||
void HandleTurning()
|
||||
{
|
||||
// Q and E cancel each other out, reducing the turn to zero.
|
||||
if (Input.GetKey(KeyCode.Q))
|
||||
turnSpeed = Mathf.MoveTowards(turnSpeed, -maxTurnSpeed, turnDelta);
|
||||
if (Input.GetKey(KeyCode.E))
|
||||
turnSpeed = Mathf.MoveTowards(turnSpeed, maxTurnSpeed, turnDelta);
|
||||
|
||||
// If both pressed, reduce turning speed toward zero.
|
||||
if (Input.GetKey(KeyCode.Q) && Input.GetKey(KeyCode.E))
|
||||
turnSpeed = Mathf.MoveTowards(turnSpeed, 0, turnDelta);
|
||||
|
||||
// If neither pressed, reduce turning speed toward zero.
|
||||
if (!Input.GetKey(KeyCode.Q) && !Input.GetKey(KeyCode.E))
|
||||
turnSpeed = Mathf.MoveTowards(turnSpeed, 0, turnDelta);
|
||||
|
||||
transform.Rotate(0f, turnSpeed * Time.deltaTime, 0f);
|
||||
}
|
||||
|
||||
void HandleJumping()
|
||||
{
|
||||
// Handle variable force jumping.
|
||||
// Jump starts with initial power on takeoff, and jumps higher / longer
|
||||
// as player holds spacebar. Jump power is increased by a diminishing amout
|
||||
// every frame until it reaches maxJumpSpeed, or player releases the spacebar,
|
||||
// and then changes to the falling state until it gets grounded.
|
||||
if (groundState != GroundState.Falling && Input.GetKey(KeyCode.Space))
|
||||
{
|
||||
if (groundState != GroundState.Jumping)
|
||||
{
|
||||
// Start jump at initial power.
|
||||
groundState = GroundState.Jumping;
|
||||
jumpSpeed = initialJumpSpeed;
|
||||
}
|
||||
else
|
||||
// Jumping has already started...increase power toward maxJumpSpeed over time.
|
||||
jumpSpeed = Mathf.MoveTowards(jumpSpeed, maxJumpSpeed, jumpDelta);
|
||||
|
||||
// If power has reached maxJumpSpeed, change to falling until grounded.
|
||||
// This prevents over-applying jump power while already in the air.
|
||||
if (jumpSpeed == maxJumpSpeed)
|
||||
groundState = GroundState.Falling;
|
||||
}
|
||||
else if (groundState != GroundState.Grounded)
|
||||
{
|
||||
// handles running off a cliff and/or player released Spacebar.
|
||||
groundState = GroundState.Falling;
|
||||
jumpSpeed = Mathf.Min(jumpSpeed, maxJumpSpeed);
|
||||
jumpSpeed += Physics.gravity.y * Time.deltaTime;
|
||||
}
|
||||
else
|
||||
jumpSpeed = Physics.gravity.y * Time.deltaTime;
|
||||
}
|
||||
|
||||
// TODO: Directional input works while airborne...feature?
|
||||
void HandleMove()
|
||||
{
|
||||
// Capture inputs
|
||||
horizontal = Input.GetAxis("Horizontal");
|
||||
vertical = Input.GetAxis("Vertical");
|
||||
|
||||
// Create initial direction vector without jumpSpeed (y-axis).
|
||||
direction = new Vector3(horizontal, 0f, vertical);
|
||||
|
||||
// Clamp so diagonal strafing isn't a speed advantage.
|
||||
direction = Vector3.ClampMagnitude(direction, 1f);
|
||||
|
||||
// Transforms direction from local space to world space.
|
||||
direction = transform.TransformDirection(direction);
|
||||
|
||||
// Multiply for desired ground speed.
|
||||
direction *= moveSpeedMultiplier;
|
||||
|
||||
// Add jumpSpeed to direction as last step.
|
||||
direction.y = jumpSpeed;
|
||||
|
||||
// Finally move the character.
|
||||
characterController.Move(direction * Time.deltaTime);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2a507efeb4218499aaa7cd74f326f5de
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in New Issue
Block a user