# cocos.actions.move_actions module

Actions for moving things around based on their velocity and acceleration.

The simplest usage:

> sprite = cocos.sprite.Sprite(‘ship.png’) sprite.velocity = (100, 100) sprite.do(Move())

This will move the sprite (100, 100) pixels per second indefinitely.

Typically the sprite would be controlled by the user, so something like:

    keys = <standard pyglet keyboard state handler>

    class MoveShip(Move):
       def step(self, dt):
           super(MoveShip, self).step(dt)
           self.target.dr = (keys[key.RIGHT] - keys[key.LEFT]) * 360
           rotation = math.pi * self.target.rotation / 180.0
           rotation_x = math.cos(-rotation)
           rotation_y = math.sin(-rotation)
           if keys[key.UP]:
               self.target.acceleration = (200 * rotation_x, 200 * rotation_y)

    ship.do(MoveShip())

class `Move`(*args, **kwargs)

  Bases: `cocos.actions.base_actions.Action`

  Move the target based on parameters on the target.

  For movement the parameters are:

      target.position = (x, y)
      target.velocity = (dx, dy)
      target.acceleration = (ddx, ddy) = (0, 0)
      target.gravity = 0

  And rotation:

      target.rotation
      target.dr
      target.ddr

  `step`(dt)

class `WrappedMove`(*args, **kwargs)

  Bases: `cocos.actions.move_actions.Move`

  Move the target but wrap position when it hits certain bounds.

  Wrap occurs outside of 0 < x < width and 0 < y < height taking into account the dimenstions of the target.

  `init`(width, height)

    Init method.

    Parameters: | width : integer The width to wrap position at. height : integer The height to wrap position at.

  `step`(dt)

class `BoundedMove`(*args, **kwargs)

  Bases: `cocos.actions.move_actions.Move`

  Move the target but limit position when it hits certain bounds.

  Position is bounded to 0 < x < width and 0 < y < height taking into account the dimenstions of the target.

  `init`(width, height)

    Init method.

    Parameters: | width : integer The width to bound position at. height : integer The height to bound position at.

  `step`(dt)

class `Driver`(*args, **kwargs)

  Bases: `cocos.actions.base_actions.Action`

  Drive a CocosNode object around like a car in x, y according to a direction and speed.

  Example:

      # control the movement of the given sprite
      sprite.do(Driver())

      ...
      sprite.rotation = 45
      sprite.speed = 100
      ...

  The sprite MAY have these parameters (beyond the standard position and rotation):

  > speed
  > : float
  >   Speed to move at in pixels per second in the direction of the target’s rotation.
  > acceleration
  > : float
  >   If specified will automatically be added to speed. Specified in pixels per second per second.
  > max_forward_speed
  > : float (default None)
  >   Limits to apply to speed when updating with acceleration.
  > max_reverse_speed
  > : float (default None)
  >   Limits to apply to speed when updating with acceleration.

  `step`(dt)