Cześć! Zastanawia mnie w jaki sposób mógłbym powiązać klasy tak, że mam klasy: Body, World, Player, GamplayScreen
class Body{
public:
Vector2D position;
Vector2D velocity;
void SetVelocityX(float vel)
{
velocity.x = vel;
}
};
class World{
public:
World(float gravity){
this->gravity = gravity;
}
void Update()
{
body.velocity += gravity;
body.position += velocity;
}
float gravity;
Body body;
};
class Player {
public:
void Update(){
if(keyPressed(A)){
body.SetVelocityX(-10.0f);
} else if(keyPressed(D)){
body.SetVelocityX(10.0f);
}
}
void Draw(renderer)
{
Rect rect;
rect,x = body.position.x;
rect.y = body.position.y;
rect.w = 50; // tutaj przykładowa liczba
rect.h = 50; // tu też
renderer.Draw(rect);
}
Body body;
};
class GameplayScreen{
public:
GameplayScreen(){
world = new World(gravity);
}
void Update(){
world->Update();
}
const float gravity = 9.81f;
World * world;
};
Także, co tutaj się dzieje to, mamy 2 klasy Body i World, które są częścią silnika i 2 klasy które są częścią projektu. Klasa body odpowiada za kształt oraz fizykę i możemy dodać ją do każdego obiektu, do przeciwników, do skrzynki która spada skądś itd., a klasa World odpowiada za świat, czyli za update fizyki, grawitację itd, itd.
W jaki sposób stworzyć takie połączenie między nimi żeby działało mniej więcej w taki sposób jak pokazałem w kodzie wyżej?