Smikkelbakje
Smikkelbakje
CC#
Created by Smikkelbakje on 1/4/2023 in #help
❔ slide bug in csharp script in unity
im making a game in unity and i have a bug in my script where my character glides over the ground when i hold Space + left or right + and then let go of left or right
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Smoovement : MonoBehaviour
{
public float walkSpeed;
public float moveInput;
public bool isGrounded;
private Rigidbody2D rb;
public LayerMask groundmask;
public float jumplength;
public PhysicsMaterial2D bounceMat, normalMat;
public bool canJump = true;
public float jumpValue = 0.0f;


public float distance = 0.6f;
public LayerMask wallLayer;
public bool isTouchingWallL = false;
public bool isTouchingWallR = false;




// Start is called before the first frame update
void Start()
{
rb = gameObject.GetComponent<Rigidbody2D>();

}

// Update is called once per frame
void Update()
{
moveInput = Input.GetAxisRaw("Horizontal");

if(jumpValue == 0.0f && isGrounded){
rb.velocity = new Vector2(moveInput * walkSpeed, rb.velocity.y);
}
isGrounded = Physics2D.OverlapBox(new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 0.5f),
new Vector2(0.9f, 0.4f), 0f, groundmask);

isTouchingWallR = Physics2D.Raycast(transform.position, Vector2.right, distance, wallLayer);
isTouchingWallL = Physics2D.Raycast(transform.position, Vector2.left, distance, wallLayer);


if(jumpValue >= 0 && !isGrounded && (isTouchingWallL || isTouchingWallR))
{
rb.sharedMaterial = bounceMat;
}else
{
rb.sharedMaterial = normalMat;
}



if(Input.GetKey("space") && isGrounded && canJump)
{
jumpValue += 0.3f;

}

if(Input.GetKeyDown("space") && isGrounded && canJump)
{
rb.velocity = new Vector2(0.0f, rb.velocity.y);

}

if(jumpValue >= jumplength && isGrounded)
{
float tempx = moveInput * walkSpeed;
float tempy = jumpValue;
rb.velocity = new Vector2(tempx, tempy);
Invoke("ResetJump", 0.3f);

}

if(Input.GetKeyUp("space")){
if(isGrounded){
rb.velocity = new Vector2(moveInput * walkSpeed, jumpValue);
jumpValue = 0.0f;
}
canJump = true;
}
if(jumpValue == 0){
canJump = true;
}


}

void ResetJump()
{
canJump = false;
jumpValue = 0;


}

void OndrawnGizmosSelected()
{
Gizmos.color = Color.green;
Gizmos.DrawCube(new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 0.5f), new Vector2(0.9f, 0.2f));

}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Smoovement : MonoBehaviour
{
public float walkSpeed;
public float moveInput;
public bool isGrounded;
private Rigidbody2D rb;
public LayerMask groundmask;
public float jumplength;
public PhysicsMaterial2D bounceMat, normalMat;
public bool canJump = true;
public float jumpValue = 0.0f;


public float distance = 0.6f;
public LayerMask wallLayer;
public bool isTouchingWallL = false;
public bool isTouchingWallR = false;




// Start is called before the first frame update
void Start()
{
rb = gameObject.GetComponent<Rigidbody2D>();

}

// Update is called once per frame
void Update()
{
moveInput = Input.GetAxisRaw("Horizontal");

if(jumpValue == 0.0f && isGrounded){
rb.velocity = new Vector2(moveInput * walkSpeed, rb.velocity.y);
}
isGrounded = Physics2D.OverlapBox(new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 0.5f),
new Vector2(0.9f, 0.4f), 0f, groundmask);

isTouchingWallR = Physics2D.Raycast(transform.position, Vector2.right, distance, wallLayer);
isTouchingWallL = Physics2D.Raycast(transform.position, Vector2.left, distance, wallLayer);


if(jumpValue >= 0 && !isGrounded && (isTouchingWallL || isTouchingWallR))
{
rb.sharedMaterial = bounceMat;
}else
{
rb.sharedMaterial = normalMat;
}



if(Input.GetKey("space") && isGrounded && canJump)
{
jumpValue += 0.3f;

}

if(Input.GetKeyDown("space") && isGrounded && canJump)
{
rb.velocity = new Vector2(0.0f, rb.velocity.y);

}

if(jumpValue >= jumplength && isGrounded)
{
float tempx = moveInput * walkSpeed;
float tempy = jumpValue;
rb.velocity = new Vector2(tempx, tempy);
Invoke("ResetJump", 0.3f);

}

if(Input.GetKeyUp("space")){
if(isGrounded){
rb.velocity = new Vector2(moveInput * walkSpeed, jumpValue);
jumpValue = 0.0f;
}
canJump = true;
}
if(jumpValue == 0){
canJump = true;
}


}

void ResetJump()
{
canJump = false;
jumpValue = 0;


}

void OndrawnGizmosSelected()
{
Gizmos.color = Color.green;
Gizmos.DrawCube(new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 0.5f), new Vector2(0.9f, 0.2f));

}
}
27 replies