// Update is called once per frame void Update() { if (controller.collisions.above || controller.collisions.below) { if (controller.collisions.slidingDownMaxSlope) { velocity.y += controller.collisions.slopeNormal.y * -gravity * Time.deltaTime; } else { velocity.y = 0; } } Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); velocity.x = input.x * moveSpeed; velocity.y -= gravity; castInfo side = controller.HorizontalCast(checkDistance * Mathf.Sign(velocity.x), transform.position); if (side.hitObject != null && Input.GetAxisRaw("Fire1") != 0) { if (side.hitObject.tag == "box") { pushObject = side.hitObject; } } if (pushObject != null) { PushBox(pushObject, side); return; } if (Input.GetAxisRaw("Jump") != 0 && controller.collisions.below) { velocity.y = jumpVelocity; } controller.Move(velocity * Time.deltaTime); }
float GetDistanceToInteractable(Vector2 interPos, Controller2D boxController) { float dist = 0; if ((interPos.y - boxController.box.bounds.size.y / 2) < (transform.position.y - controller.box.bounds.size.y / 2)) { //chacter staat hoger castInfo i = controller.HorizontalCast(Mathf.Abs(transform.position.x - interPos.x) * Mathf.Sign(interPos.x - transform.position.x), transform.position, pushObject); if (i.hasHit) { dist = i.hitDistance; } } else { //box staat hoger castInfo i = boxController.HorizontalCast(Mathf.Abs(interPos.x - transform.position.x) * Mathf.Sign(transform.position.x - interPos.x), interPos, gameObject); if (i.hasHit) { dist = -i.hitDistance; } } return(dist); }
void Update() { if (controller.collisions.above || controller.collisions.below) { if (controller.collisions.slidingDownMaxSlope) { velocity.y += controller.collisions.slopeNormal.y * -gravity * Time.deltaTime; } else { velocity.y = 0; } } transform.localScale = (Mathf.Sign(velocity.x) * scale.x * Vector2.right) + scale.y * Vector2.up; Vector2 input = new Vector2(Mathf.Sign(target.transform.position.x - transform.position.x), 0); velocity.x = input.x * moveSpeed; velocity.y -= gravity; castInfo i = controller.HorizontalCast((velocity.x * 3) * Time.deltaTime, transform.position); if (i.hasHit && Vector2.Angle(i.hitNormal, Vector2.up) > controller.maxAngle) { velocity.y = jumpVelocity; } controller.Move(velocity * Time.deltaTime); }