我正在创建一个2D射击游戏,我想在它与射弹物体发生碰撞时增加某些敌人的大小。 我可以通过更改
下面的浮点值来缩放代码中的精灵enemyAnimation.Initialize(enemyTexture, Vector2.Zero, 47, 61, 8, 30, Color.White, **2f**, true);
然后我可以将浮点数更改为变量,并在发生碰撞时更新变量。唯一的问题是,敌人的规模确实发生了变化,但仅限于新生的敌人和所有敌人。这是显而易见的,但我希望能够做到的(如果可能的话)是改变发生碰撞的敌人的大小而只改变那个敌人......
关于我如何做到这一点的任何想法?
编辑:
好的,我有点困惑。我在我的Enemy类中创建了一个名为scaleSize的浮点值。然后在我的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没有正确初始化。但我不确定我应该在哪里改变这一点。如上面的代码示例中所示,浮动值正在改变敌人的规模,但是通过动画类,如果我改变它,它会改变所有敌人(afaik)。 我很抱歉,因为我知道这很模糊,但我无法绕过我应该设置敌人比例大小的地方。创造它的敌人类很好,但它没有参考敌人的实际规模。
答案 0 :(得分:3)
将比例值存储在Enemy类中。这样,你的Enemy对象的每个实例都有自己的比例值。
如果你没有Enemy课程,你应该创建一个。你也可以存储敌人的纹身,让每个敌人都有自己的样子。
修改强>
您很可能没有在Draw方法中使用正确的比例值。举个例子:Enemy class:
class Enemy
{
protected float Scale { get; set; }
protected Texture2D Texture { get; set; }
protected Vector2 Position { get; set; }
public Enemy()
{
Scale = 1f;
}
public void Hit()
{
Scale = 2f;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(Texture, Position, null, Color.White, 0, Vector2.Zero, Scale, SpriteEffects.None, 1);
}
}
用法示例:
Enemy A = new Enemy();
A.Hit();
A.Draw(spriteBatch);