当前位置: 首页>>代码示例>>C++>>正文


C++ Obstacle::setBRadius方法代码示例

本文整理汇总了C++中Obstacle::setBRadius方法的典型用法代码示例。如果您正苦于以下问题:C++ Obstacle::setBRadius方法的具体用法?C++ Obstacle::setBRadius怎么用?C++ Obstacle::setBRadius使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Obstacle的用法示例。


在下文中一共展示了Obstacle::setBRadius方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: initEntites

void HelloWorldScene::initEntites()
{
    // Create Vehicles
    int numOfVehicles = Prm.getValueAsInt("NumOfVehicles");
    for(int i = 0 ; i < numOfVehicles ; ++ i)
    {
        Vehicle* vehicle = Vehicle::create("Vehicle.png");
        vehicle->setGameWorld(this);
        vehicle->setBRadius(15.0f);
        vehicle->setPosition(Vec2(random(0.0f, 600.0f), random(0.0f, 600.0f)));
        vehicle->setTag(getNextValidID());
        this->setBehaviorAsNormalVehicle(vehicle);
        _gameView->addChild(vehicle);
        _vehicles.pushBack(vehicle);
        
        // for DetailView Vehicle
        Vehicle* detailViewVehicle = Vehicle::create("Vehicle.png");
        _detailView->addChild(detailViewVehicle);
        _detailViewVehicles.pushBack(detailViewVehicle);
    }
    
    _pursuer = Vehicle::create("pursuer.png");
    _pursuer->setGameWorld(this);
    _pursuer->setBRadius(15.0f);
    _pursuer->setMaxSpeed(100.0f);
    _pursuer->setPosition(Vec2(random(0.0f, 600.0f), random(0.0f, 600.0f)));
    _pursuer->setTag(getNextValidID());
    _pursuer->getSteering()->enableBehavior(BehaviorType::kWander);
    _pursuer->getSteering()->enableBehavior(BehaviorType::kPursuit);
    _pursuer->getSteering()->enableBehavior(BehaviorType::kObstacleAvoidance);
    _gameView->addChild(_pursuer);
    _vehicles.pushBack(_pursuer);
    
    Vehicle* detailViewPursuer = Vehicle::create("pursuer.png");
    _detailView->addChild(detailViewPursuer);
    _detailViewVehicles.pushBack(detailViewPursuer);
    
    
    // initialize selected detailView vehicle and worldView vehicle.
    _selectedVehicleDetail = Vehicle::create("Vehicle.png");
    _selectedVehicleDetail->setVisible(false);
    _detailView->addChild(_selectedVehicleDetail);
    
    this->setBehaviorAsSelectedVehicle(_vehicles.at(0));
    
    // Create Obstacles;
    int numOfObstacles = Prm.getValueAsInt("NumOfObstacles");
    for(int i = 0 ; i < numOfObstacles ; ++ i)
    {
        int numOfAllowableTrys = 2000;
        while(numOfAllowableTrys--)
        {
            double radius = random(Prm.getValueAsFloat("MinObstacleRadius"), Prm.getValueAsFloat("MaxObstacleRadius"));
            const int border = 10;
            
            float x = random(radius + border, 600.0f - radius - border);
            float y = random(radius + border, 600.0f - radius - border);
            
            Obstacle* ob = Obstacle::create();
            ob->setPosition(Vec2(x, y));
            ob->setBRadius(radius);
            
            const int minGapBetweenObstacles = 20;
            if(!overlapped(ob, _obstacles, minGapBetweenObstacles))
            {
                DrawNode* node = DrawNode::create();
                node->drawCircle(Vec2::ZERO, ob->getBRadius(), 360.0f, 100, false, 1.0f, 1.0f, Color4F::BLUE);
                ob->addChild(node);
                
                _obstacles.pushBack(ob);
                ob->setTag(getNextValidID());
                _gameView->addChild(ob);
                
                // for DetailView Obstacles
                Obstacle* detailViewOb = Obstacle::create();
                detailViewOb->setPosition(Vec2(x, y));
                detailViewOb->setBRadius(radius);
                
                DrawNode* avoidanceNode = DrawNode::create();
                avoidanceNode->drawCircle(Vec2::ZERO, detailViewOb->getBRadius(), 360.0f, 100, false, 1.0f, 1.0f, Color4F::BLUE);
                detailViewOb->addChild(avoidanceNode);
                
                _detailViewObstacles.pushBack(detailViewOb);
                _detailView->addChild(detailViewOb);
                
                break;
            }
        }
    }
    
    // Create Walls
    
    const int numOfVertex = Prm.getValueAsInt("NumOfWallVertice");
    std::vector<Vec2> walls
    {
        cocos2d::Vec2(20,20),
        cocos2d::Vec2(580,20),
        cocos2d::Vec2(580,580),
        cocos2d::Vec2(20,580)
    };
//.........这里部分代码省略.........
开发者ID:GameAIProgramming,项目名称:Ch3-SteeringBehaviors,代码行数:101,代码来源:HelloWorldScene.cpp


注:本文中的Obstacle::setBRadius方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。