Push an object along a path?

I've read iTween is good for this but the only one i can find is to move it. I want my character to move say a boulder out of the way by pushing it, but only to a certain point? Like say the character pushes the boulder to the end point which then triggers an event of some kind because it's on top of a switch maybe? Just to give an example?

I'm not asking for like the whole move and push to an event just how to move say a boulder to a certain point that it stops moving?

2 Answers

2

Um, a way to go about this...

Give the "boulder" a rigid body... And then add a collider that's attatched to it, so that when you move it, it only moves because of the physics, and stops when it hits the collider... Could be easy...

Alt: You can animate this... if player goes to spot A, and pushes F, then boulder rotates and moves ->>> if that makes sense.

You can use a distance check.

You need a few varaibles:

Vector3 targetPoint - The target in world space.

float actionDistance - How far the boulder needs to be from targetPoint before triggering the action. If you want the boulder to have to be in a specific spot set this equal to the boulder's radius

float radius - The radius of the boulder.

Here is some code

public void Move(Vector3 pushForce) {
        // First, update our position based on the push applyed by the player
        transform.position += playerPushForce * Time.deltaTime;
        // Find a vector going from the center of this boulder to the target point 
        Vector3 difference = targetPoint - transform.position;
        // If the distance is less than the actionDistance - radius, then we have a hit
        // (the dot product of a vector with its self is the squared magnitude of said vector)
        if (Vector3.Dot(difference, difference) < (actionDistance * actionDistance) - (radius * radius)) {
            // Hit it!
        }
    }

When you subtract v1 from v2 (v2 - v1) you get a new vector. This vector points from v2 to v1. http://www.sparknotes.com/testprep/books/sat2/physics/chapter4section3.rhtml The difference vector is a vector pointing from the boulders position to the target position. (If you need to visualize it, try Debug.DrawLine()) We can use the length of this vector to determine how far the boulder is from it's target.