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);
|
|
}
|
|
}
|
|
}
|