Jump to content
  • Advertisement
Sign in to follow this  
barodamike

Drawing enemies based on position

This topic is 2001 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi all, I'm relatively new to game programming and I'm sure there's a nice and easy way to do this so I thought I'd post here and see if I can get a concise reply before I make changes myself. The issue is I have 3 different types of enemies that I render to the screen. Unfortunately the way my code works is each type of enemy object gets stored in its own list. When it's time to draw the enemies to the screen they get rendered in the order of what kind of enemy they are because I simply draw one enemy list, draw the next enemy list and then draw the 3rd enemy list. This is not good because the 3rd enemy types are always "on top of" the first enemy types. I know there must be a way to define and interface or something where I can store the 3 different objects in one big list and sort them neatly depending on how close they are to the screen and update all their positions and so on. I tried putting them all in a list of their parent class but then I don't have access to their update methods. Help appreciated!

Share this post


Link to post
Share on other sites
Advertisement

Do the update methods override the parent class's method, or does the parent class not have that method? If the parent doesn't have an update method, why not have all of your enemies inherit from an interface that has an update method, and then have a list of that interface (in which you can sort the enemies by render-order)?

 

I'm not sure what language you're using, so I can't know that these ideas are right for you, but that's what I'd do in your situation.

Share this post


Link to post
Share on other sites
A separate list that you can sort by render order is the usual way.

But sorting by distance is unusual, unless the objects are transparent. For solid objects you can use a Z buffer so the order doesn't matter.

Share this post


Link to post
Share on other sites
I think you misunderstand how inheritence works. You can inherit an update and draw function from a parent, like this.

class TEnemy
{
public:
  virtual void Update();
  virtual void Draw ();
}

class TGoblin : public TEnemy
{
public:
  void Update ();
... //other functions or members
}

// Create a list of TEnemy, and when update is called, it will update the specifix enemy type
std::vector <TEnemy> EnemyList;

If I am misunderstanding what you are doing, tb en post some code for us.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!