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); }
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); } } }
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; }