66 lines
1.5 KiB
C#
66 lines
1.5 KiB
C#
|
using Unity.VisualScripting.FullSerializer;
|
||
|
using UnityEditor.Experimental.GraphView;
|
||
|
using UnityEngine;
|
||
|
|
||
|
/// <summary>
|
||
|
/// Playermovement.
|
||
|
/// </summary>
|
||
|
public class PlayerController : MonoBehaviour
|
||
|
{
|
||
|
[SerializeField] public float speed;
|
||
|
[SerializeField] public float acceleration;
|
||
|
[SerializeField] public float jumpPower;
|
||
|
|
||
|
private Rigidbody2D body;
|
||
|
private bool isGround = true;
|
||
|
|
||
|
private Animator jumpAnim;
|
||
|
|
||
|
void Start()
|
||
|
{
|
||
|
body = this.GetComponent<Rigidbody2D>();
|
||
|
jumpAnim = this.GetComponent<Animator>();
|
||
|
}
|
||
|
|
||
|
private void Update()
|
||
|
{
|
||
|
// run logic auto
|
||
|
speed += acceleration * Time.deltaTime;
|
||
|
transform.Translate(new Vector2(1f,0f) * speed * Time.deltaTime);
|
||
|
|
||
|
// jump logic + jump animation
|
||
|
if (Input.GetKey(KeyCode.W) && isGround)
|
||
|
{
|
||
|
Jump();
|
||
|
jumpAnim.SetBool("jump", true);
|
||
|
isGround = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// jump method logic + jump animation
|
||
|
void Jump()
|
||
|
{
|
||
|
Vector2 velocity = body.velocity;
|
||
|
velocity.y = jumpPower;
|
||
|
body.velocity = velocity;
|
||
|
}
|
||
|
|
||
|
private void OnCollisionEnter2D(Collision2D other)
|
||
|
{
|
||
|
if (other.collider.tag == "Ground")
|
||
|
{
|
||
|
isGround = true;
|
||
|
jumpAnim.SetBool("jump", false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ground trigger
|
||
|
void OnTriggerEnter2D(Collider2D other)
|
||
|
{
|
||
|
if (other.gameObject.tag == "Ground")
|
||
|
{
|
||
|
FindObjectOfType<GroundSpawner>().SpawnGround();
|
||
|
}
|
||
|
}
|
||
|
}
|