bool ObstacleDobleAir::collision(BaseVehicle &vehicle)
{
    if(vehicle.getState() != kStateJump)
        return false;
    
    float y = vehicle.getPositionY() - vehicle.getPlayerY() - vehicle.getContentSize().height * 0.5f;
    if(y < MAX_PLAYER_JUMP * 0.45f)
        return false;
    
    CCRect rectAir = vehicle.getAirCollision();
    
    int i;
    CCRect area;
    
    for(i = 0; i < vCollision.size(); i++)
    {
        area = currentCollisionArea(vCollision[i]);
        if(area.intersectsRect(rectAir))
        {
            return true;
        }
    }
    
    return false;
}
bool ObstacleSimple::collision(BaseVehicle &vehicle)
{
    float top, bottom;
    CCRect area = boundingBox();
    
    top = area.getMinY() + getContentSize().height * 0.0f;
    bottom = top + getContentSize().height * 0.37f;
    
    float y = vehicle.getGroundCollision().getMinY() + (vehicle.getGroundCollision().getMaxY() - vehicle.getGroundCollision().getMinY()) * 0.25f;
    
    y = vehicle.getPlayerY() + vehicle.getContentSize().height * 0.3f * 0.5f;
    
    if(y < top || y > bottom)
        return false;
    
    // CCLog("Pass %f ; %f ; %f", y, top, bottom);
    
    return BaseObstacle::collision(vehicle);
}
Ejemplo n.º 3
0
bool BaseObstacle::collision(BaseVehicle& vehicle)
{
    
    Rect rectAir = vehicle.getAirCollision();
    Rect rectFloor = vehicle.getGroundCollision();
    
    unsigned int i;
    Rect area;
    
    for(i = 0; i < vCollision.size(); i++)
    {
        area = currentCollisionArea(vCollision[i]);
        if(area.intersectsRect(rectAir) && area.intersectsRect(rectFloor))
        {
            return true;
        }
    }
    
    
    return false;
}