Beispiel #1
0
 //-----------------以下为命令修改------------------//
 //修改后的信息处理函数
 protected override void DoMessages(double elapsedTime)
 {
     if (!working)
     {
         return;
     }
     foreach (CmpMessage msg in ComponentMessages)
     {
         //0号攻击判定
         if (msg.Tag == CmpMessage.CollisionMasseageNormal)
         {
             this.working = false;
             //进入死亡模式
             isdead = true;
             CollisionMessages.CollisionMasseageNormal m =
                 msg as CollisionMessages.CollisionMasseageNormal;
             double x, y, x1, y1;
             x  = Position.X; y = Position.Y;
             x1 = m.Position.X; y1 = m.Position.Y;
             Vector2D vct = new Vector2D();
             vct.X = x - x1;
             vct.Y = y - y1;
             vct.Normalize();
             effect = new Entities.WindBlueEffect(texturemanager, Position,
                                                  360 - (float)vct.GetAngle(), 40, 40);
         }
     }
     ComponentMessages.Clear();
 }
Beispiel #2
0
 protected virtual void DoMessages(double elapsedTime)
 {
     foreach (CmpMessage msg in ComponentMessages)
     {
         //0号攻击判定
         if (msg.Tag == CmpMessage.CollisionMasseageNormal)
         {
             CollisionMessages.CollisionMasseageNormal m =
                 msg as CollisionMessages.CollisionMasseageNormal;
             if (attackMessageBox.AllowAttack[0])
             {
                 this.Direction.rotate(180);
                 attackMessageBox.ClosePort(0);
                 double x, y, x1, y1;
                 x  = Position.X; y = Position.Y;
                 x1 = m.Position.X; y1 = m.Position.Y;
                 Vector2D vct = new Vector2D();
                 vct.X = x - x1;
                 vct.Y = y - y1;
                 vct.Normalize();
                 this.Direction.X = vct.X;
                 this.Direction.Y = vct.Y;
             }
         }
     }
     ComponentMessages.Clear();
 }
Beispiel #3
0
        public override bool Collision(Bullet bullet, ref MessageManager msgManager)
        {
            float  x        = (float)bullet.Position.X;
            float  y        = (float)bullet.Position.Y;
            double distance = (Position.X - x) * (Position.X - x) + (Position.Y - y) * (Position.Y - y);

            if (distance > AttckRadiusDouble)
            {
                return(false);
            }
            Vector2D vct = new Vector2D(Position.X - x, Position.Y - y);

            vct.Normalize();
            double ag          = vct.GetAngle();
            int    changecount = currentIndex - firstIndex;
            double oriag       = JudgeBegin - AverageAngle * changecount;

            if (oriag < 0)
            {
                oriag = 360 + oriag;
                if (oriag + JudgeArea > 360)
                {
                    if (ag < (oriag - JudgeArea) && ag > (oriag + JudgeArea - 360))
                    {
                        return(false);
                    }
                }
                else
                {
                    if (ag < (oriag - JudgeArea) && ag > (oriag + JudgeArea))
                    {
                        return(false);
                    }
                }
            }
            else
            {
                if (oriag - JudgeArea < 0)
                {
                    if (ag < (360 + oriag - JudgeArea) && ag > (oriag + JudgeArea))
                    {
                        return(false);
                    }
                }
                else
                {
                    if (ag < (oriag - JudgeArea) && ag > (oriag + JudgeArea))
                    {
                        return(false);
                    }
                }
            }
            CollisionMessages.CollisionMasseageNormal mess = new CollisionMessages.CollisionMasseageNormal();
            mess.Position.X = Position.X;
            mess.Position.Y = Position.Y;
            mess.SetColor(0);
            msgManager.AcceptMessage(mess);

            return(true);
        }
Beispiel #4
0
        public override bool Collision(Bullet bullet, ref MessageManager msgManager)
        {
            float x = (float)bullet.Position.X;
            float y = (float)bullet.Position.Y;
            double distance = (Position.X - x) * (Position.X - x) + (Position.Y - y) * (Position.Y - y);
            if (distance > AttckRadiusDouble)
            {
                return false;
            }
            Vector2D vct = new Vector2D(Position.X - x, Position.Y - y);
            vct.Normalize();
            double ag = vct.GetAngle();
            int changecount = currentIndex - firstIndex;
            double oriag = JudgeBegin - AverageAngle * changecount;
            if (oriag < 0)
            {
                oriag = 360 + oriag;
                if (oriag + JudgeArea > 360)
                {
                    if (ag < (oriag - JudgeArea) && ag > (oriag + JudgeArea - 360))
                        return false;
                }
                else
                {
                    if (ag < (oriag - JudgeArea) && ag > (oriag + JudgeArea))
                        return false;
                }
            }
            else
            {
                if (oriag - JudgeArea < 0)
                {
                    if (ag < (360 + oriag - JudgeArea) && ag > (oriag + JudgeArea))
                    {
                        return false;
                    }
                }
                else
                {
                    if (ag < (oriag - JudgeArea) && ag > (oriag + JudgeArea))
                        return false;
                }
            }
            CollisionMessages.CollisionMasseageNormal mess = new CollisionMessages.CollisionMasseageNormal();
            mess.Position.X = Position.X;
            mess.Position.Y = Position.Y;
            mess.SetColor(0);
            msgManager.AcceptMessage(mess);

            return true;
        }