x


FPS game walk animation script help

hi i this script :

var smooth : float;
var height : float;
private var pos = Vector3.zero;


function Update () {

    if(Input.GetButton("w")||Input.GetButton("a")||Input.GetButton("s")||Input.GetButton("d")){
        Walk();
    }

    if(!Input.GetButton("w")&&!Input.GetButton("a")&&!Input.GetButton("s")&&!Input.GetButton("d")){
        transform.localPosition = Vector3.Lerp(transform.localPosition,pos,Time.deltaTime*.2);
        Idle();
    }
}

function Walk () {
    transform.localPosition.y = Mathf.PingPong(Time.time*smooth,height);

    transform.localPosition.x = Mathf.PingPong(Time.time*(smooth/2),height);
}

function Idle () {
    transform.localPosition.y = Mathf.PingPong(Time.time*.002,.002);
}

what it does it makes it look like the player is walking kind of..... the problem is that when you start moving or when you stop the movement looks kind of jittery.

oh and the position of the gun is at zero on the x y and z.

any thoughts on the problem would be nice....

thanks

more ▼

asked Aug 02 '10 at 01:20 AM

3dDude gravatar image

3dDude
2.6k 65 76 103

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

1 answer: sort voted first

On the face of it you are probably getting a mismatch on these lines:

transform.localPosition = Vector3.Lerp(transform.localPosition,pos,Time.deltaTime*.2);
Idle();

you are smoothly moving toward local zero (on the first line with the Lerp) and then jumping in Y (in Idle) to whatever the PingPong Spits out.

I assume you are trying to smoothly move to zero when you stop walking and THEN start bobbing up and down. But you are trying to do both simultaneously.

[Addition]

You could try bobbing a 'target' and then have the localPosition of your transform 'Lerp' towards that.

eg.

var bobFollowSpeed : Vector3;
var target : Vector3; 

function Update()
{
    functionThatMakesTargetBobAround();

    transform.localPosition = Vector3.Lerp(transform.localPosition, target, bobFollowSpeed*Time.deltaTime);
}

The functionThatMakesTargetBobAround() is basically what you have for the localPosition at the moment although you'll have to repackage it somewhat.

[Also] just to note, the following in the above is equivalent to 'else'

if(!Input.GetButton("w")&&!Input.GetButton("a")&&!Input.GetButton("s")&&!Input.GetButton("d")){
more ▼

answered Aug 02 '10 at 03:35 AM

cncguy gravatar image

cncguy
1k 21 25 36

this helped.... but the problem is still there.

Aug 02 '10 at 01:00 PM 3dDude

What did you change as a result? Also PingPong I would have thought looks a bit unnatural at its maximum points where it will cause the movment to suddenly change direction.

Aug 02 '10 at 07:49 PM cncguy

can you recommend something better then pingPong?

Aug 02 '10 at 10:03 PM 3dDude
(comments are locked)
10|3000 characters needed characters left
Your answer
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:

x3772
x3447
x3324
x1172
x67

asked: Aug 02 '10 at 01:20 AM

Seen: 3354 times

Last Updated: Aug 02 '10 at 06:03 PM