コード例 #1
0
ファイル: Player.cs プロジェクト: khyperia/Spacerunner2
 private void CollisionDetection()
 {
     if (FzooMode)
     {
         return;
     }
     foreach (var playerPoint in GetPlayerPoints(0, 0))
     {
         if (_field[playerPoint])
         {
             var normal          = _field.Normal(playerPoint);
             var rotationalForce = Vector2.Dot(normal, Vector2.FromTheta((_position - playerPoint).Theta - (float)Math.PI / 2));
             _rotationVelocity += rotationalForce * 3;
             _velocity          = normal * 5;
         }
     }
 }
コード例 #2
0
ファイル: Field.cs プロジェクト: khyperia/Spacerunner2
        protected override void Tick(Graphics graphics, Rectangle camera)
        {
            graphics.DrawImageUnscaled(_boardBitmap, -camera.X, -camera.Y);

            var center       = camera.Center();
            var screencenter = new Vector2(camera.Width / 2.0f, camera.Height / 2.0f);

            foreach (var pointable in EntitiesOfType <IPointable>())
            {
                var delta = pointable.Position - center;
                var dist  = Math.Min(camera.Width, camera.Height) / 2 - 10;
                if (Math.Abs(delta.X) > dist || Math.Abs(delta.Y) > dist)
                {
                    graphics.DrawPolygon(pointable.Pen, new[]
                    {
                        (screencenter + delta.Normalized * dist).Point,
                        (screencenter + Vector2.FromTheta(delta.Theta + 0.2f) * dist).Point,
                        (screencenter + Vector2.FromTheta(delta.Theta - 0.2f) * dist).Point
                    });
                }
            }
        }