我正在XNA製作2D射擊遊戲。我一直在努力對玩家的拍攝速度(每多久可以將播放器拍攝另一子彈),並作出如此,一旦前面的子彈已經走過像這樣有一定的距離玩家只能再次拍攝:XNA如何使對象不可見
if (this.bulletList[0].BULLETS[(this.bulletList[0].BULLETS.Count) - 1].X >= Pos.X + attackSpeed)
canShoot = true;
其中bulletList是可用的投射物,玩家可以射擊,BULLETS是已經射擊的子彈列表,attackSpeed是子彈應該射擊的速率,或者簡單地說:子彈必須行進到另一個子彈能夠行進的距離被槍殺。
現在我一直在研究碰撞。我的方法是處置子彈擊中一個目標,像這樣經過:
for (int i = 0; i < player.BULLETLIST[0].BULLETS.Count; i++)
{
if (CollisionManager.PlayerBulletOnBot(player.BULLETLIST[0].BULLETS[i], bot))
player.BULLETLIST[0].BULLETS.RemoveAt(i);
}
問題是,如果子彈已經在命中目標刪除,我不能再如果子彈已經通過給定距離要求爲另一顆子彈射擊。 爲了解決這個問題,我希望子彈在被擊中時可以打開隱形,之後它會被另一個已經制作好的功能處理掉。
一顆子彈只需要繪製一次。一旦它在那裏,我可以以任何我想要的方式調整它的位置。它不會被重新繪製在不同的位置,因此我不能使用該標誌。這就是爲什麼我認爲使對象透明或不可見應該起作用的原因。 – Villager
繪製一次? ..每幀正確?該標誌可以讓你跳過下一幀。 –
據我所知,你不能在XNA中畫一次,只是簡單地將它移動到每一幀。這不僅僅是框架的工作原理。西蒙的權利,你會想要一個可見的財產,你改變,並只繪製子彈基於此。 – Falgantil