Пример #1
0
        public override void Update()
        {
            if (WorldPosition.Equals(GameField.MyGameField.Finish))
            {
                GameController.Controller.CurrentPlayer.Lives -= this.Punishment;
                this.Alive = false;
            }
            if (path.Count == 0)
            {
                WannaMove(GameField.MyGameField);
                return;
            }
            if (Equals(PointExtensions.Sub(WorldPosition, path[0]).GetLength(), speed) || PointExtensions.Sub(WorldPosition, path[0]).GetLength() < speed)
            {
                WorldPosition = path[0];
                path.RemoveAt(0);
                return;
            }

            PointF target    = path[0];
            PointF diraction = new PointF(target.X - WorldPosition.X,
                                          target.Y - WorldPosition.Y);
            float length = diraction.GetLength();

            diraction     = PointExtensions.Scale(diraction, 1 / length);
            WorldPosition = PointExtensions.Sum(WorldPosition, PointExtensions.Scale(diraction, speed));

            Angle = PointExtensions.GetAngle(new PointF(1, 0), diraction);
        }
Пример #2
0
        public override void Update()
        {
            if (WorldPosition.Equals(GameField.MyGameField.Finish))
            {
                GameController.Controller.CurrentPlayer.Lives -= this.Punishment;
                this.Alive = false;
            }

            PointF target    = GameField.MyGameField.Finish;
            PointF diraction = new PointF(target.X - WorldPosition.X,
                                          target.Y - WorldPosition.Y);
            float length = diraction.GetLength();

            diraction     = PointExtensions.Scale(diraction, 1 / length);
            WorldPosition = PointExtensions.Sum(WorldPosition, PointExtensions.Scale(diraction, speed));
            Angle         = PointExtensions.GetAngle(new PointF(1, 0), diraction);
            if (PointExtensions.Sub(WorldPosition, target).GetLength() < speed)
            {
                WorldPosition = target;
                return;
            }
        }
Пример #3
0
        public void SetLookTo(PointF target)
        {
            PointF diraction = PointExtensions.Sub(WorldPosition, target);

            Angle = PointExtensions.GetAngle(new PointF(-1, 0), diraction);
        }