using System.Collections; using System.Collections.Generic; using UnityEngine; public class LocalPlayer : Player { public CharacterController charControl; public Animator Animator; public float Speed = 5; private float animWalkSpeed = 0; protected override void Update() { ApplyGravity(); ApplyInput(); Teleport(); base.Update(); } private void ApplyGravity() { if (!charControl.isGrounded) { charControl.SimpleMove(new Vector3(0.0f, -5.0f * Time.deltaTime, 0.0f)); } } private void ApplyInput() { if (Input.GetMouseButton(0)) { Vector3 mousePos = new Vector3(Input.mousePosition.x, 0.0f, Input.mousePosition.y); Vector3 screenCentre = new Vector3(Screen.width / 2, 0.0F, Screen.height / 2); Vector3 movePos = mousePos - screenCentre; movePos.x = movePos.x / Screen.width; movePos.z = movePos.z / Screen.height; charControl.Move(movePos * Speed * Time.deltaTime); animWalkSpeed = Mathf.Clamp01(movePos.magnitude * 3); playerModel.transform.LookAt(playerModel.transform.position + movePos, Vector3.up); }else if (animWalkSpeed > 0) { animWalkSpeed -= 0.1f; } Animator.SetFloat("WalkSpeed", animWalkSpeed); } void Teleport() { if (map == null) return; if (transform.position.x > map.maxX) { transform.position = new Vector3(map.minX, transform.position.y, transform.position.z); } else if (transform.position.x < map.minX) { transform.position = new Vector3(map.maxX, transform.position.y, transform.position.z); } if (transform.position.z > map.maxZ) { transform.position = new Vector3(transform.position.x, transform.position.y, map.minZ); } else if (transform.position.z < map.minZ) { transform.position = new Vector3(transform.position.x, transform.position.y, map.maxZ); } } }