- Home /
Trouble with spring platform
I'm working on a 2D platformer and one of the things I'm trying to include are spring platforms for the player to bounce on, but I've run into a bit of a problem. If the player is inputting a direction, the spring force won't be applied to them and they'll just slide off. I've checked to see if something in the movement/physics code is negating the application of a Y force, but there doesn't seem to be anything doing that. I'm not getting any warnings or errors either.
The platform that the player is bouncing off of is set to ignore raycasts, so it's not that it's being seen as the player is standing on solid ground. I apologize for my super messy code.
Spring code:
function OnCollisionEnter(hit : Collision)
{
if (hit.gameObject.tag == "Player")
{
hit.rigidbody.AddForce(bounceForce * transform.up, ForceMode.VelocityChange);
spriteAnimate.PlayOnce("Bounce");
}
}
Movement code:
function Start () {
distToGround = collider.bounds.extents.y;
}
function IsGrounded(): boolean {
return Physics.Raycast(transform.position, -Vector3.up, distToGround + 0.1);
}
function Update () {
if (Input.GetKey("d")) {
rigidbody.velocity.x += 10;
sprite.PlayLoop("WalkRight");
facingLeft = false;
} else if (Input.GetKey("a")) {
rigidbody.velocity.x -= 10;
sprite.PlayLoop("WalkLeft");
facingLeft = true;
} else if (facingLeft == true) {
sprite.PlayLoop("StandLeft");
} else {
sprite.PlayLoop("StandRight");
}
if (Input.GetKey("d") == false && Input.GetKey("a") == false && IsGrounded()) {
rigidbody.velocity.x = 0;
}
if (Input.GetKey("d") && Input.GetKey("a")) {
rigidbody.velocity.x = 0;
sprite.PlayLoop("StandRight");
}
if (IsGrounded() == false && facingLeft == true) {
sprite.PlayLoop("JumpingLeft");
} else if (IsGrounded() == false && facingLeft == false) {
sprite.PlayLoop("JumpingRight");
}
if (Input.GetKeyDown("w") && IsGrounded()) {
rigidbody.velocity.y += jumpVelocity;
}
if (rigidbody.velocity.y < maxFallVelocity) {
rigidbody.velocity.y = maxFallVelocity;
}
if (rigidbody.velocity.x > maxXYVelocity) {
rigidbody.velocity.x = maxXYVelocity;
} else if (rigidbody.velocity.x < -maxXYVelocity) {
rigidbody.velocity.x = -maxXYVelocity;
}
}
Your answer
Follow this Question
Related Questions
Ball bounce problem 1 Answer
How to make objects "Bounceable" 1 Answer
how the ball bounces of equal in angles? 1 Answer
Sphere Goes Crazy 3 Answers
why does my train jump off the tracks? 0 Answers