RocketPoge/Assets/Scripts/PlayerController.cs
2023-01-27 13:12:45 +05:30

53 lines
1.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float groundCheckDistance = 0.1f;
public float gravity;
public float maxGravityVelocity= 0.01f;
public Vector3 velocity = Vector3.zero;
public Vector3 speed;
public Vector3 maxVelocity;
public float friction = 0.1f;
void Start()
{
CameraFollower.Target=transform;
}
float input =0;
void Update(){
input = Input.GetAxis("Horizontal");
}
void FixedUpdate()
{
Gravity();
HandleInput();
transform.eulerAngles = Vector3.zero + new Vector3(0,0, (-velocity.x / maxVelocity.x) * 10);
transform.position += velocity;
}
void HandleInput(){
if(input >0){
velocity = new Vector3(Mathf.Clamp(velocity.x + speed.x, -maxVelocity.x, maxVelocity.x), Mathf.Clamp(velocity.y + speed.y, -maxVelocity.y, maxVelocity.y));
}else if(input < 0){
velocity = new Vector3(Mathf.Clamp(velocity.x - speed.x, -maxVelocity.x, maxVelocity.x), Mathf.Clamp(velocity.y + speed.y, -maxVelocity.y, maxVelocity.y));
}else{
velocity = Vector3.Lerp(velocity, new Vector3(0, (velocity.y > 0) ? 0 : velocity.y),friction);
}
}
void Gravity(){
RaycastHit2D groundHit = Physics2D.Linecast(transform.position, transform.position - new Vector3(0,groundCheckDistance,0));
if(groundHit.collider != null){
Debug.DrawLine(transform.position, groundHit.point, Color.green);
float dist = transform.position.y - groundHit.point.y;
velocity = new Vector3(velocity.x,groundCheckDistance - dist,velocity.z);
}else{
velocity = new Vector3(velocity.x,Mathf.Lerp(velocity.y, -maxGravityVelocity,gravity),velocity.z);
}
}
}