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


C++ Position::GetExactDist2d方法代码示例

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


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

示例1: UpdateAI

        void UpdateAI(uint32 diff)
        {
            if (CanCheck)
            {
                if (uiCheckTimer <= diff)
                {
                    uiCheckTimer = 250;
                    float x, y;
                    me->GetPosition(x, y);

                    if (pos.GetExactDist2d(x, y) >= 4.0f)
                    {
                        float dist = me->GetDistance(pos);
                        float _x, _y, _z = me->GetPositionZ();
                        me->GetNearPoint2D(_x, _y, dist - 4.0f, me->GetAngle(&pos));
                        me->CastSpell(_x, _y, _z, SPELL_SUMMON_SHOCKWAVE, true);
                    }
                }
                else
                    uiCheckTimer -= diff;
            }
        }
开发者ID:BravadoToDeath,项目名称:ArkCORE-NG,代码行数:22,代码来源:boss_general_husam.cpp

示例2: _MovePosition

            void _MovePosition(float dist, float angle)
            {
                angle = me->NormalizeOrientation(angle);

                float cur_dist = 5.0f;
                Movement::MoveSplineInit init(*me);
                bool bPassed = false;

                while (!bPassed)
                {
                    float x = me->GetPositionX() + (cur_dist * std::cos(angle));
                    float y = me->GetPositionY() + (cur_dist * std::sin(angle));
                    float z = me->GetPositionZ();
                    float center_dist = centerPos.GetExactDist2d(x, y);
                    if (center_dist > 100.0f || cur_dist > dist)
                        bPassed = true;
                    else
                    {
                        G3D::Vector3 point;
                        point.x = x;
                        point.y = y;
                        if (center_dist > 40.0f)
                            z = -225.0f + ((center_dist - 40.0f) * 0.1333f);
                        else
                            z = -225.0f;

                        point.z =  z;
                        init.Path().push_back(point);
                        cur_dist += 5.0f;
                    }
                }

                if (!init.Path().empty())
                {
                    init.SetWalk(false);
                    init.Launch();
                }
            }
开发者ID:Cailiaock,项目名称:5.4.7-Wow-source,代码行数:38,代码来源:boss_warlord_zonozz.cpp

示例3: UpdateAI

            void UpdateAI(uint32 const diff)
            {
                if (bExplode)
                    return;

                if (!UpdateVictim())
                    return;

                if (centerPos.GetExactDist2d(me->GetPositionX(), me->GetPositionY()) > 95.0f)
                {
                    bExplode = true;
                    events.Reset();
                    me->StopMoving();
                    DoCastAOE(SPELL_BLACK_BLOOD_ERUPTION);
                    me->DespawnOrUnsummon(5000);
                    return;
                }

                events.Update(diff);

                if (uint32 eventId = events.ExecuteEvent())
                {
                    switch (eventId)
                    {
                        case EVENT_CONTINUE:
                        {
                            DoCast(me, SPELL_VOID_OF_THE_UNMAKING_VISUAL, true);
                            bAura = true;
                            _MovePosition(200.0f, me->GetOrientation());
                            //me->GetMotionMaster()->MovePoint(POINT_VOID, pos);
                            break;
                        }
                        case EVENT_CHECK_DISTANCE:
                        {
                            if (!bAura)
                            {
                                events.ScheduleEvent(EVENT_CHECK_DISTANCE, 500);
                                break;
                            }

                            if (Player* pPlayer = me->FindNearestPlayer(5.0f))
                            {
                                if (constAuraPtr aur = me->GetAura(SPELL_VOID_DIFFUSION_BUFF))
                                {
                                    if (aur->GetStackAmount() >= 9)
                                        if (InstanceScript* pInstance = me->GetInstanceScript())
                                            if (Creature* pZonozz = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_ZONOZZ)))
                                                pZonozz->AI()->SetData(DATA_ACHIEVE, 1);
                                }
                                
                                me->RemoveAura(SPELL_VOID_OF_THE_UNMAKING_VISUAL);
                                bAura = false;
                                DoCastAOE(SPELL_VOID_DIFFUSION_DMG);
                                me->StopMoving();
                                float ang = me->GetAngle(pPlayer->GetPositionX(), pPlayer->GetPositionY());

                                if (me->NormalizeOrientation(me->GetOrientation() - ang) < (M_PI / 4.0f))
                                    ang = me->GetOrientation();

                                _MovePosition(200.0f, ang + M_PI);
                                
                                //me->GetMotionMaster()->MovePoint(POINT_VOID, pos);
                                events.ScheduleEvent(EVENT_UPDATE_AURA, 4000);
                                events.ScheduleEvent(EVENT_CHECK_DISTANCE, 4000);
                            }
                            else if (Creature* pZonozz = me->FindNearestCreature(NPC_ZONOZZ, 5.0f))
                            {
                                uint8 stacks = 1;
                                if (constAuraPtr aur = me->GetAura(SPELL_VOID_DIFFUSION_BUFF))
                                    stacks = aur->GetStackAmount();

                                pZonozz->AI()->SetData(DATA_VOID, stacks);
                                events.Reset();
                                me->StopMoving();
                                me->DespawnOrUnsummon(2000);
                            }
                            else
                                events.ScheduleEvent(EVENT_CHECK_DISTANCE, 200);
                            break;
                        }
                        case EVENT_UPDATE_AURA:
                            DoCast(me, SPELL_VOID_OF_THE_UNMAKING_VISUAL, true);
                            bAura = true;
                            break;
                        default:
                            break;
                    }
                }
            }
开发者ID:Cailiaock,项目名称:5.4.7-Wow-source,代码行数:89,代码来源:boss_warlord_zonozz.cpp


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