Einzelnen Beitrag anzeigen
Ungelesen 01.09.11, 13:35   #9
MetalForLive
Anfänger
 
Registriert seit: May 2010
Beiträge: 14
Bedankt: 0
MetalForLive ist noch neu hier! | 0 Respekt Punkte
Standard

ich poste ma den Code

Achso das mit der ArrayList klappt zwar aber ich weiß nicht wie ich sage das die collision nur innerhalb der Liste passieren soll

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.Collections;

namespace WindowsGame2
{
    /// <summary>
    /// Dies ist der Haupttyp für Ihr Spiel
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;


        Texture2D bg, wk, mk;

        bool collision = true;

       
        
        ArrayList MyTextureList= new ArrayList();


        

       

       public int player_X = 400;
       public int player_Y = 400;

        int player_speed = 4;


       

        int player_XM = 800;
        int player_YM = 400;

        int playerm_speed = 4;


        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        /// <summary>
        /// Ermöglicht dem Spiel die Durchführung einer Initialisierung, die es benötigt, bevor es ausgeführt werden kann.
        /// Dort kann es erforderliche Dienste abfragen und nicht mit der Grafik
        /// verbundenen Content laden.  Bei Aufruf von base.Initialize werden alle Komponenten aufgezählt
        /// sowie initialisiert.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Fügen Sie Ihre Initialisierungslogik hier hinzu


            graphics.PreferredBackBufferHeight = 720;
            graphics.PreferredBackBufferWidth = 1280;
            graphics.ApplyChanges();

            this.Window.Title = "Fang den Wenzel";

            base.Initialize();
        }

        /// <summary>
        /// LoadContent wird einmal pro Spiel aufgerufen und ist der Platz, wo
        /// Ihr gesamter Content geladen wird.
        /// </summary>
        protected override void LoadContent()
        {
            // Erstellen Sie einen neuen SpriteBatch, der zum Zeichnen von Texturen verwendet werden kann.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            bg = Content.Load<Texture2D>("bg");
            wk = Content.Load<Texture2D>("wk");
            mk = Content.Load<Texture2D>("mk");

            // TODO: Verwenden Sie this.Content, um Ihren Spiel-Content hier zu laden
        }

        /// <summary>
        /// UnloadContent wird einmal pro Spiel aufgerufen und ist der Ort, wo
        /// Ihr gesamter Content entladen wird.
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: Entladen Sie jeglichen Nicht-ContentManager-Content hier
        }

        /// <summary>
        /// Ermöglicht dem Spiel die Ausführung der Logik, wie zum Beispiel Aktualisierung der Welt,
        /// Überprüfung auf Kollisionen, Erfassung von Eingaben und Abspielen von Ton.
        /// </summary>
        /// <param name="gameTime">Bietet einen Schnappschuss der Timing-Werte.</param>
        protected override void Update(GameTime gameTime)
        {
            // Ermöglicht ein Beenden des Spiels
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();

            // Player Tastatur

            KeyboardState ks = Keyboard.GetState();
            if (ks.IsKeyDown(Keys.W))
            {
                player_Y-= player_speed;
            }
            
            if (ks.IsKeyDown(Keys.S))
            {
                player_Y+= player_speed;
            }

            if (ks.IsKeyDown(Keys.D))
            {
                player_X+= player_speed;
            }
            if (ks.IsKeyDown(Keys.A))
            {
                player_X-= player_speed;
            }

            if (ks.IsKeyDown(Keys.E))
            {
                player_speed += 1;
            }
            if (ks.IsKeyDown(Keys.R))
            {
                player_speed -= 1;
            }


            //Player2 Tastatur

           
            if (ks.IsKeyDown(Keys.Up))
            {
                player_YM-= player_speed;
            }
            
            if (ks.IsKeyDown(Keys.Down))
            {
                player_YM+= player_speed;
            }

            if (ks.IsKeyDown(Keys.Right))
            {
                player_XM+= player_speed;
            }
            if (ks.IsKeyDown(Keys.Left))
            {
                player_XM -= player_speed;

            }

            if (ks.IsKeyDown(Keys.RightControl))
            {
                playerm_speed += 1;
            }
            if (ks.IsKeyDown(Keys.RightAlt))
            {
                playerm_speed -= 1;
            }



            // TODO: Fügen Sie Ihre Aktualisierungslogik hier hinzu

            base.Update(gameTime);
        }

        /// <summary>
        /// Dies wird aufgerufen, wenn das Spiel selbst zeichnen soll.
        /// </summary>
        /// <param name="gameTime">Bietet einen Schnappschuss der Timing-Werte.</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            spriteBatch.Begin();
            spriteBatch.Draw(bg, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight), Color.White);
            spriteBatch.Draw(wk, new Rectangle(player_X, player_Y, 40, 60 ), Color.White);
            spriteBatch.Draw(mk, new Rectangle(player_XM, player_YM, 40, 60), Color.White);

            Texture2D MyTexture = new Texture2D(graphics.GraphicsDevice, 32, 32);
            MyTextureList.Add(wk);
            MyTextureList.Add(mk);

            

            if (collision)
            {
                spriteBatch.Draw(bg, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight), Color.Green);
                spriteBatch.Draw(wk, new Rectangle(player_X, player_Y, 40, 60), Color.White);
                spriteBatch.Draw(mk, new Rectangle(player_XM, player_YM, 40, 60), Color.White);
            }



            spriteBatch.End();

            



            // TODO: Fügen Sie Ihren Zeichnungscode hier hinzu

            base.Draw(gameTime);
        }
    }
}
Edit:

@testerws

Das Problem ist das nur 2 bestimmte Texturen bei Berührung etwas machen sollen und da der Background auch ne 2dtexture ist denkt der pc das bei berürung des BG auch die interaktion kommen soll.
MetalForLive ist offline   Mit Zitat antworten