# How to let a ship Obj float

Hi guys,

I finally got my ship with the right texture. Now i want to fake the movement of going up and down with the waves in the simpleUpdate.

```      int max = -300;       if (start){          for( i = 0 ; i > max ; i--){                          r.setLocalTranslation(new Vector3f(-1300, i, -500));             }       }```

And do something to get it down again.

Is this a nice way to simulate the ship going up and down with the waves?

Has anyone got suggestions?

R

Hi,

also I created my own HeightGenerator(), so I can get the actual height of the wave.

```projectedGrid = new ProjectedGrid( "ProjectedGrid", cam, 50, 50, 0.01f, new HeightGenerator() {          public float getHeight( float x, float z, float time ) {                             hoehe=FastMath.sin(x*0.05f+time*2.0f)+FastMath.cos(z*0.1f+time*1.0f)*4;                          return hoehe;          }       } );```

and then rotate the shipmodel with the height value in the update method:

```modelship.getLocalRotation().fromAngles(-1.55f, 1.6f, hoehe/20f); //or modelship.getLocalRotation().fromAngles(-1.55f+(hoehe/16), 0.0f, 0.0f); ```

hope this will help.

but my ship model is a spatial…

Is that a problem?

But now i can't see my ship model any more when i do this.

`r1.getLocalRotation().fromAngles(-1.55f, 1.6f, hoehe/20f);`

How come?

i got my ship to float!! Awesome!

Can I aswel let the camera rotate with the waves as if i was on that ship?

You don't need to roll your own HeightGenerator to get at the height value. You could do it like this:

heightGen= new WaterHeightGenerator();

projectedGrid = new ProjectedGrid( "ProjectedGrid", cam, 50, 50, 0.01f, heightGen);

You can then get the height value with

float height = heightGen.getHeight(

ship.getWorldTranslation().x,

ship.getWorldTranslation().z,

Timer.getTimer().getTimeInSeconds() );

a more universal wave which you could use would be the sine wave. just a thought