'Private implementation of the `update()` method. This is where most
of the motion logic lives, along with gravity and collision detection.
Parameters
dt : float
The change in time since the last call.'

def _update(self, dt):

    speed = (FLYING_SPEED if self.flying else WALKING_SPEED)
    d = (dt * speed)
    (dx, dy, dz) = self.get_motion_vector()
    (dx, dy, dz) = ((dx * d), (dy * d), (dz * d))
    if (not self.flying):
        self.dy -= (dt * GRAVITY)
        self.dy = max(self.dy, (- TERMINAL_VELOCITY))
        dy += (self.dy * dt)
    (x, y, z) = self.position
    (x, y, z) = self.collide(((x + dx), (y + dy), (z + dz)), PLAYER_HEIGHT)
    self.position = (x, y, z)
