2Dシューティングゲームを作成していますが、敵と発射物が衝突したときに、特定の敵のサイズを大きくしたいと思います。以下のfloat値を変更するだけで、コード内のスプライトをスケーリングできます
enemyAnimation.Initialize(enemyTexture, Vector2.Zero, 47, 61, 8, 30, Color.White, **2f**, true);
次に、そのfloatを変数に変更し、衝突が発生したときに変数を更新できます。唯一の問題は、敵のスケールが変化することですが、新しくスポーンされた敵とそのすべてに対してのみです。これは明らかでしたが、私ができるようにしたいのは(可能であれば)、衝突が発生した敵のサイズを変更し、その敵だけを変更することです...
これをどのように行うかについてのアイデアはありますか?
編集:
さて、私は少し混乱しています。EnemyクラスにscaleSizeというfloat値を作成しました。次に、Game1.csの衝突検出で、forループを実行して、敵オブジェクトのリストを反復処理しています。
// Projectile vs Enemy Collision
for (int i = 0; i < projectiles.Count; i++)
{
for (int j = 0; j < enemies.Count; j++)
{
// Create the rectangles we need to determine if we collided with each other
// Determine if the two objects collided with each other
if (rectangle1.Intersects(rectangle2))
{
enemies[j].Health -= projectiles[i].Damage;
projectiles[i].Active = false;
*enemies[j].scaleSize += 1f;*
}
}
}
ここで、scaleSizeが正しく初期化されていないことに気付きました。しかし、これをどこで変更すればよいかわかりません。上記の前のコードサンプルのように、float値は敵のスケールを変更していますが、Animationクラスを介して、これを変更すると、すべての敵(afaik)に対して変更されます。これは非常に曖昧であることがわかっているので申し訳ありませんが、敵のスケールサイズを設定する場所に頭を包むことができません。敵クラスを作成することは問題ありませんが、敵の実際の規模を参照しているわけではありません。