Question by
sangoku4 · Sep 19, 2020 at 02:32 PM ·
gravityjumpingplatformerplatformcomponents
Hi thanks in advance , i can't find the error in my code but my character can't stop from going up when i jump onto the platform i made which has a platform effector 2D applied to it
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformerPlayer : MonoBehaviour
{
public float speed = 250.0f;
public Animator _anim;
private Rigidbody2D _body;
private BoxCollider2D _box;
public float jumpForce = 12.0f;
float deltaX;
void Start () {
_body = GetComponent<Rigidbody2D>();
_anim = GetComponent<Animator>();
_box = GetComponent<BoxCollider2D>();
}
void Update()
{
deltaX = Input.GetAxis("Horizontal")* speed * Time.deltaTime;
Vector2 movement = new Vector2 (deltaX , _body.velocity.y);
_body.velocity = movement;
Vector3 max = _box.bounds.max;
Vector3 min = _box.bounds.min;
Vector2 corner1 = new Vector2 (max.x , max.y - 0.1f);
Vector2 corner2 = new Vector2 (min.x , min.y - 0.2f);
Collider2D hit = Physics2D.OverlapArea(corner1, corner2);
bool grounded;
if ( hit == null ) {
grounded = false ;
}else{
grounded = true;
}
_body.gravityScale = grounded && deltaX == 0 ? 0 : 1;
if ( grounded && Input.GetKeyDown(KeyCode.Space)){
_body.AddForce(Vector2.up*jumpForce , ForceMode2D.Impulse);
}
_anim.SetFloat("speed", Mathf.Abs(deltaX));
if (!Mathf.Approximately(deltaX , 0 )) {
transform.localScale = new Vector3 (Mathf.Sign(deltaX), 1 ,1);
}
}
}
Comment
Your answer
Follow this Question
Related Questions
How To Make my Player Glide in 2d platformer 3 Answers
Had to turn off gravity scale, but now player goes through walls 0 Answers
How do I set the jump distance and height to my player? 0 Answers
Problems with player jumping (Welcome to Unity Answers The best place to ask and answer questions ) 0 Answers
Floats are acting really weird 0 Answers