Exemplo n.º 1
0
        public void Update(TimeSpan elapsed)
        {
            var momentum = new Vector2();

            momentum += Direction;

            Velocity += momentum * (float)elapsed.TotalSeconds;

            Direction = Vector2.Zero;

            if (Math.Abs(Velocity.X) > 100)
            {
                Velocity = new Vector2(Math.Sign(Velocity.X) * 100, Velocity.Y);
            }

            var lossX = Velocity.X * Math.Min(1f, 5f * (float)elapsed.TotalSeconds);
            var lossY = Velocity.Y * Math.Min(1f, 5f * (float)elapsed.TotalSeconds);

            Velocity = new Vector2(Velocity.X - lossX, Velocity.Y - lossY);

            var displacement = Velocity * (float)elapsed.TotalSeconds;
            var newLocation  = m_location.Position + displacement;

            m_location.SetPosition(newLocation);
        }
Exemplo n.º 2
0
 public void Update(TimeSpan elapsed)
 {
     if (Direction != Vector2.Zero)
     {
         m_newLocation = m_location.Position + (Direction.Normalize() * (float)Speed) * (float)elapsed.TotalSeconds;
         m_location.SetPosition(m_newLocation);
         LastDirection = Direction;
         Direction     = Vector2.Zero;
     }
 }
        public void Update(TimeSpan elapsed)
        {
            if (Target != null)
            {
                var targetPoint  = Target.Location.Position;
                var currentPoint = m_location.Position;
                var displacement = (targetPoint - currentPoint);
                var distance     = displacement.Length;

                if (distance > 1)
                {
                    displacement = displacement.Normalize() * distance;

                    m_location.SetPosition(m_location.Position + displacement);
                }
            }
        }
Exemplo n.º 4
0
        public Shoot(Vector2 position, Vector2 direction, Color4ub startColor, Color4ub endColor, float angle = 2, float radius = 2)
        {
            m_location = new LocationComponent(this);
            m_location.SetPosition(position);

            m_cone = new Cone(
                position,
                radius,
                angle,
                startColor,
                endColor,
                (float)((Math.Atan2(direction.Y, direction.X) + Math.PI*2) - (angle / 2.0) - Math.PI*2)
                );

            m_lifeTimeTotal = 0.2;
            m_lifeTime = m_lifeTimeTotal;
        }