Bonjour tout le monde ! Je suis entrain de faire un petit jeu de plateforme. Rien de très méchant. . Cependant quand je suis arrivé à la partie de détection des objets j'ai séché.
Voilà mon problème :
J'ai créé deux class pour gérer le "Hero" et les "Ennemie".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Actor
    {
        public static List<Actor> Actors = new List<Actor>();

        public Vector2 Position;
        public Texture2D Texture;
              

        public Vector2 Origin
        {
            get
            {
                return new Vector2(this.Texture.Width / 2, this.Texture.Height / 2);
            }
        }

        public Actor()
        {
            Actors.Add(this);
        }

        public virtual void Update(GameTime gameTime) {}

        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(this.Texture, Camera.GetScreenPosition(this.Position), null, Color.White, 0f, this.Origin, 1f, SpriteEffects.None, 0f);

        }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class Enemy : Actor
    {
        private static Random random = new Random();
        private static float enemySpeed = 5f;

        private Vector2 pointA, pointB;
        private float percent, interpAmount;


        public static Vector2 GetRandomLevelPosition()
        {
            return new Vector2(random.Next(Level.Width) + Level.Bounds.X, random.Next(Level.Height) + Level.Bounds.Y) ;
        }


        public override void  Update(GameTime gameTime)
        {
            percent += (float)gameTime.ElapsedGameTime.TotalSeconds * interpAmount * 10;

            if (percent > 1f)
            {
                SetTargetPosition();
            }
            else
            {
                this.Position = Vector2.Lerp(pointA, pointB, percent);
            }
            
        }

        public void SetTargetPosition()
        {
            pointA = this.Position;
            pointB = GetRandomLevelPosition();

            percent = 0f;
            interpAmount = enemySpeed / Vector2.Distance(pointA, pointB);

        }
    }
Pour l'instant tout va bien. Ensuite, je me suis concentré sur la détection d'objets. Je me suis aidé des "Rectangles" pour ça. Le problème est que le rectangle n'est généré que pour un ennemie et le héro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public Rectangle Rectangle
        {
            get
            {
                return new Rectangle((int)this.Position.X, (int)this.Position.Y, this.Texture.Width, this.Texture.Height);
            }
        }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Texture2D enemyTexture = Content.Load<Texture2D>("Textures//enemy");
            
            for (int i = 0; i < 2; i++)
            {

                enemy = new Enemy();
                enemy.Texture = enemyTexture;
                enemy.Position = Enemy.GetRandomLevelPosition();
                enemy.SetTargetPosition();                

            }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
if (player.Rectangle.Intersects(enemy.Rectangle))
                myColor = Color.Violet;
            else
                myColor = Color.White;
Voilà. Merci pour votre aide.