Вы должны расположить свои пули, ракеты ... и т. Д.относительно пушки вашего космического корабля.
Представьте себе пушку, установленную на корабле.Вы можете представить это оружие с помощью объекта.
Например:
public class Gun
{
private ISpaceshipDesign _spaceshipDesign;
public Gun(ISpaceshipDesign spaceshipDesign)
{
this._spaceshipDesign = spaceshipDesign;
}
public void Fire()
{
//...
}
}
Передавайте ссылку на ваш космический корабль при создании оружия, чтобы вы знали, на каком космическом корабле установлено оружие.
Космический корабль должен всегда знать, где он находится в 2D-плоскости (X, Y координаты).Он также должен знать, где на космическом корабле установлена пушка.
public interface ISpaceshipDesign
{
public Point GunLocation { get; }
}
Свойство GunLocation должно возвращать местоположение пушки относительно текущей позиции корабля.Например:
public Point GunLocation
{
get
{
double x = (double) this.GetValue(Canvas.LeftProperty) + 21;
double y = (double) this.GetValue(Canvas.TopProperty) + 17;
return new Point(x, y);
}
}
Затем вы можете получить доступ к этим данным в методе Gun's Fire ().
Например:
public void Fire()
{
Point gunLocation = _spaceshipDesign.GunLocation;
// Position your missle using the gun's current coördinates (X, Y).
}
Примерно год назад я писалчасть из 10 серий о создании похожей игры (астероиды) в Silverlight.Одна статья обсуждает, как заставить оружие стрелять.Вы можете найти его здесь:
http://cgeers.com/2010/05/07/silverlight-asteroids-part-6-fire/
Вы можете установить несколько кораблей на корабль, один, который стреляет обычными пулями, другой для ракет ... и т. Д.У каждого оружия будет свое местоположение на корабле.Вы можете изменить метод Fire () так, чтобы он вызывался разными клавишами (A = missle, space = bullets).
Надеюсь, это поможет.