Example #1
0
        // [根據技能種類執行不同動作]
        // 在場上顯示技能效果.
        // skill        技能名稱.
        // userPosition 施術者位置.
        // userVector   施術者面向方位.
        private static void showSkill(Skill skill, Point2D userPosition, Vector2D userVector, bool isPlayer)
        {
            // 如果和玩家不同平面(玩家看不到),就不會畫圖.
            if (!userPosition.IsOnPlain(GlobalAsset.player.Plain) || userPosition.DistanceTo(Player.position) > GlobalAsset.seenRange)
            {
                return;
            }

            switch (skill)
            {
            case Skill.attack:
                showSkill(convert(userPosition), convert(userVector), 1, 1, GlobalAsset.attack);
                if (isPlayer)
                {
                    attack.Play();
                }
                break;

            case Skill.straight:
                showSkill(convert(userPosition), convert(userVector), 3, 1, GlobalAsset.straight);
                if (isPlayer)
                {
                    specialAttack.Play();
                }
                break;

            case Skill.horizon:
                showSkill(convert(userPosition), convert(userVector), 1, 3, GlobalAsset.horizon);
                if (isPlayer)
                {
                    specialAttack.Play();
                }
                break;

            case Skill.create:
                showSkill(convert(userPosition), GlobalAsset.create);
                if (isPlayer)
                {
                    build.Play();
                }
                break;
            }
        }
Example #2
0
        // 在家附近巡邏.不會離太遠.
        private void Patrol(Creater home)
        {
            Point2D  temp   = this.posit.Copy();
            Vector2D target = RandomVector(10);

            for (int i = 0; i < 4; ++i)
            {
                temp.MoveFor(target, 1);
                if (temp.DistanceTo(home.position) > patrolDist)
                {
                    temp.MoveFor(target, -1);
                    target = VectorConvert.Rotate(target);
                }
                else
                {
                    moveCommamd = Convert(target);
                    return;
                }
            }

            skillCommand = SkillCommand.None;
            patrolDist   = this.posit.DistanceTo(home.position);
        }