完了したにもかかわらず、学校でまだ取り組んでいるプロジェクトのために、しばらくの間何かをコーディングしようとしていました。
衝突した敵に弾丸を発射する手榴弾を作りたいのですが、atmで助けが必要なのは、一度に8つの弾丸をさまざまな方向に発射することです.
これが私の先生がそれを行うために私にくれたコードです(私は彼に助けを求めました)
if (mouse.LeftButton == ButtonState.Pressed)
{
Texture2D pewTexture;
pewTexture = game.Content.Load<Texture2D>("pew");
game.firingSound.Play();
//Tweak pews to shoot at mouse, rather than just going straight on the y axis.
pew = new CPew(game, pewTexture);
pew.velocity = new Vector2((float)Math.Cos(rotation), (float)Math.Sin(rotation)) * 10f + spriteVelocity;
pew.position = position + pew.velocity * 5;
//easy cheesy way:
//pew.position = position;
//pew.position.X += 15f;
//pew.position.Y -= 20f;
//super awesome cool way for cool people and celebrities
pew.position = position +
new Vector2(
texture.Width * .2f - pew.texture.Width * .2f,
-pew.texture.Height);
game.pews.Add(pew);
myFiringDelay = 10;
}
else
{
if (mouse.RightButton == ButtonState.Pressed)
{
float pi2 = (float)Math.PI * 2.0f;
int numShots = 10;
float pi2overnum = pi2 / numShots;
for (int i = 0; i < numShots; i++)
{
Vector2 direction = PiToVec2(pi2overnum * i);
//particles[i].reset(position,direction, vector2.zero, 6);
game.pews[i].Reset(pew.position, direction, Vector2.Zero);
}
Vector2 PiToVec2(float piT)
{
return new Vector2((float)Math.Sin(piT), (float)Math.Cos(piT));
}
どうやらこれにより、マウスの右クリックであらゆる方向に撃たれるようになりますが、試してみるとゲームが真っ直ぐにクラッシュします次に、弾丸であるピュークラスがあり、同時にそれらの方向に撃たれたい
皆さんは、私が示したコードを参考にできないかもしれません。これを行う方法をしばらく探しましたが、何も見つからないようです
以前の例やソースコードは本当に役に立ちます。少なくともこれを別の方法で見ることができます。
クラッシュしたときに表示すると、インデックスが範囲外になるか負であることがわかります。多方向弾丸の基本コードを見せていただければ幸いです