0

これにより、他のオブジェクトとの衝突が発生し、正しく機能しません。

プレーヤーのスプライトをどのように回転させているかに関係があると思います。以下は、回転に使用しているコードです

#region draw player

        if (player.facing == 4)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 1.5708f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);

        else if (player.facing == 3)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 4.712389f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);

        else if (player.facing == 1)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 0, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);

        else if (player.facing == 2)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 3.14593f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);

        else if (player.facing == 5)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 0.785398163f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);

        else if (player.facing == 6)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 2.094395102f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);
        else if (player.facing == 7)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 3.839724354f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);
        else if (player.facing == 8)

            spriteBatch.Draw(player.txr, player.drawRect, null, Color.White, 5.497787144f, new Vector2(player.drawRect.Width / 2, player.drawRect.Height / 2), SpriteEffects.None, 0);
        #region DEBUG
        //spriteBatch.Draw(Door.txr, player.drawRect, Color.White);
        //spriteBatch.Draw(Door.txr, player1.drawRect, Color.White);
        //spriteBatch.Draw(Door.txr, player2.drawRect, Color.White);
        //spriteBatch.Draw(Door.txr, player3.drawRect, Color.White);
        #endregion
4

1 に答える 1

0

スプライト バッチを描画すると、その回転でスプライトのみがレンダリングされます。プレイヤーのコリジョン ボックスとそれをどのように処理するかは、別の問題です。描画しているのと同じ回転でプレーヤーの衝突ボックスを変換する必要があります。

于 2013-05-10T11:27:59.043 に答える