cant jump while on surface effector
hello my character cant jump while he is on the surface effector and i cant figure out why here is my player script ..all the wall stuff was for me to be able to wall jump my script is probably not the best lol but im new :)
i really want my character to slide from things the physics material didnt work so i thought i would use a surface effector ..and well that kinda worked but u cant jump of form it and i really want that top work public class PlayerController : MonoBehaviour { public float moveSpeed = 3f; float velX; float velY; bool facingRight = true; Rigidbody2D rigBody; Animator anim; bool isRunning = false; public float jumpForce = 600f; public LayerMask theGround; public Transform groundCheck; bool onTheGround = false; public LayerMask theWall; public Transform wallCheck; bool onTheWall = false; public Transform wallCheckLeft; bool onTheWallLeft = false; bool falling = false;
// Start is called before the first frame update
void Start()
{
rigBody = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
velX = Input.GetAxisRaw("Horizontal");
velY = rigBody.velocity.y;
rigBody.velocity = new Vector2(velX * moveSpeed, velY);
if (velX != 0)
{
isRunning = true;
}
else
{
isRunning = false;
}
anim.SetBool("isRunning", isRunning);
if (velY >= 0)
{
falling = false;
}
else
{
falling = true;
}
anim.SetBool("falling", falling);
onTheGround = Physics2D.Linecast(transform.position, groundCheck.position, theGround);
anim.SetBool("onTheGround", onTheGround);
if (onTheGround && Input.GetButtonDown("Jump"))
{
velY = 0f;
rigBody.AddForce(new Vector2(0, jumpForce));
}
onTheWall = Physics2D.Linecast(transform.position, wallCheck.position, theWall);
anim.SetBool("onTheWall", onTheWall);
if (onTheWall && Input.GetButtonDown("Jump"))
{
velY = 0f;
rigBody.AddForce(new Vector2(0, jumpForce * 1.2f));
}
onTheWallLeft = Physics2D.Linecast(transform.position, wallCheckLeft.position, theWall);
anim.SetBool("onTheWall", onTheWallLeft);
if (onTheWallLeft && Input.GetButtonDown("Jump"))
{
velY = 0f;
rigBody.AddForce(new Vector2(0, jumpForce * 1.2f));
}
}
private void LateUpdate()
{
Vector3 localScale = transform.localScale;
if (velX > 0)
{
facingRight = true;
}
else if (velX < 0)
{
facingRight = false;
}
if (((facingRight) && (localScale.x < 0) || ((!facingRight) && (localScale.x > 0))))
{
localScale.x *= -1;
}
transform.localScale = localScale;
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612200632im_/https://answers.unity.com/themes/thub/images/avi.jpg)