using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class Player : MonoBehaviour
{
private Rigidbody2D rb;
//Laufen:
public float speed;
private float moveInput;
private bool FacingRight = true;
//Jumping:
public float jumpForce;
private int extraJumps;
public int extraJumpsValue;
private float JumpTimeCounter;
public float Jumptime;
private bool isjumping;
//Wallslide/jumping:
private bool Wallsliding;
public float Wallslidingspeed;
private bool Walljumping;
public float xWallForce;
public float yWallForce;
public float WallJumpTime;
//Checking True/false:
private bool isTouchingFront;
public Transform frontCheck;
private bool isgrounded;
public Transform groundCheck;
public float checkRadius;
public LayerMask whatisGround;
void Start()
{
rb = GetComponent<Rigidbody2D>();
extraJumps = extraJumpsValue;
}
//Physics:
void FixedUpdate()
{
//Movement:
moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
//Springen:
isgrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatisGround);
//Richtungwechsel beim Laufen:
if (FacingRight == false && moveInput > 0)
{
Flip();
}
else if(FacingRight == true && moveInput < 0)
{
Flip();
}
}
private void Update()
{
//Springen:
if(isgrounded == true && Input.GetKeyDown(KeyCode.Space))
{
isjumping = true;
extraJumps = extraJumpsValue;
JumpTimeCounter = Jumptime;
}
if (Input.GetKeyDown(KeyCode.Space) && extraJumps > 0)
{
rb.velocity = Vector2.up * jumpForce;
extraJumps--;
}
else if (Input.GetKeyDown(KeyCode.Space) && extraJumps == 0 && isgrounded == true)
{
rb.velocity = Vector2.up * jumpForce;
}
//Super Jump:
if (Input.GetKey(KeyCode.Space) && isjumping == true) {
if(JumpTimeCounter > 0)
{
rb.velocity = Vector2.up * jumpForce;
JumpTimeCounter -= Time.deltaTime;
}
else
{
isjumping = false;
}
}
if(Input.GetKeyUp(KeyCode.Space))
{
isjumping = false;
}
//Wallsliding/jumping:
isTouchingFront = Physics2D.OverlapCircle(frontCheck.position, checkRadius, whatisGround);
if (isTouchingFront == true && isgrounded == false)
{
Wallsliding = true;
rb.velocity = new Vector2(rb.velocity.x, Mathf.Clamp(rb.velocity.y, -Wallslidingspeed, float.MaxValue));
}
else
{
Wallsliding = false;
}
if (Input.GetKeyDown(KeyCode.Space) && Wallsliding == true)
{
Walljumping = true;
Invoke("SetWallJumpingToFalse", WallJumpTime);
}
if (Walljumping == true)
{
rb.velocity = new Vector2(xWallForce, yWallForce);
}
}
//Richtungswechsel beim laufen (Aktion):
void Flip()
{
FacingRight = !FacingRight;
Vector3 Scaler = transform.localScale;
Scaler.x *= -1;
transform.localScale = Scaler;
}
//Walljumping immer aus (Aktion):
void SetWallJumpingToFalse()
{
Walljumping = false;
}
}
I can’t find an easy way without completely rewrite my code to get rid of my infinitely Wall jump problem.
I’m really frustrated because even YouTube couldn’t help me at all. Pls help me, I’m Jung and dumb