Changed movement to be easier to optimize for networking.
This commit is contained in:
parent
f74c7e1799
commit
2bb1df00ee
@ -6,11 +6,32 @@ public class Character : SyncBase {
|
|||||||
public float MovementSpeed = 5.0f;
|
public float MovementSpeed = 5.0f;
|
||||||
public CharacterController CharacterController;
|
public CharacterController CharacterController;
|
||||||
|
|
||||||
|
private Vector3 MovementDirection = new Vector3();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Moves the character in the wanted direction. Should be called on the physics tick. (FixedUpdate)
|
/// Moves the character in the wanted direction.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Direction">Movement direction.</param>
|
/// <param name="Direction">Movement direction.</param>
|
||||||
public void Move(Vector3 Direction) {
|
public void Move(Vector3 Direction) {
|
||||||
CharacterController.Move(Direction.normalized * MovementSpeed * Time.fixedDeltaTime);
|
if (!Direction.Equals(MovementDirection)) {
|
||||||
|
MovementDirection = Direction.normalized;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stops the player from moving.
|
||||||
|
/// </summary>
|
||||||
|
public void Stop() {
|
||||||
|
if (Moving()) {
|
||||||
|
MovementDirection = new Vector3();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Moving() {
|
||||||
|
return MovementDirection.sqrMagnitude != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FixedUpdate() {
|
||||||
|
CharacterController.Move(MovementDirection * MovementSpeed * Time.fixedDeltaTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,12 @@ using UnityEngine;
|
|||||||
public class PlayerController : MonoBehaviour {
|
public class PlayerController : MonoBehaviour {
|
||||||
public Character Character;
|
public Character Character;
|
||||||
|
|
||||||
void FixedUpdate() {
|
void Update() {
|
||||||
Vector3 Move = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
|
Vector3 Move = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
|
||||||
Move = transform.TransformDirection(Move);
|
if (Move.sqrMagnitude != 0) {
|
||||||
Character.Move(Move);
|
Character.Move(transform.TransformDirection(Move));
|
||||||
|
} else if (Character.Moving()) {
|
||||||
|
Character.Stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user