x


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;
    }
}
more ▼

asked Jun 03 '12 at 01:25 AM

MarigoldFleur gravatar image

MarigoldFleur
28 2 4 7

(comments are locked)
10|3000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x1882
x336
x117
x31
x9

asked: Jun 03 '12 at 01:25 AM

Seen: 340 times

Last Updated: Jun 03 '12 at 01:25 AM