我有6个未解决的外部因素。我知道这意味着什么,但我不知道如何解决它。
Collision.cpp
#include "Collision.h"
void Collision::Collide(Entity &entity1, Entity &entity2)
{
if(entity1.getX() + entity1.getWidth() > entity2.getX() ||
entity1.getX() < entity2.getX() + entity2.getWidth() ||
entity1.getY() + entity1.getHeight() > entity2.getY() ||
entity1.getY() < entity2.getY() + entity2.getHeight())
{
entity1.setX(entity1.getX());
entity1.setY(entity1.getY());
}
}
Collision.h
#ifndef COLLISION_H
#define COLLISION_H
#include "Map.h"
#include "Animation.h"
#include "Entity.h"
class Collision
{
public:
void Collide(Entity &entity1, Entity &entity2);
protected:
Map map;
};
#endif
调用碰撞的地方
collision.Collide(player, enemy);
Entity.h
#ifndef Entity_H
#define Entity_H
#include<SFML/Graphics.hpp>
#include"Animation.h"
#include"Camera.h"
class Entity
{
public:
void Initialize();
void LoadContent();
void Update(sf::RenderWindow &Window);
void Draw(sf::RenderWindow &window);
void setX(float newX);
void setY(float newY);
int getHeight();
int getWidth();
float getX();
float getY();
private:
Camera camera;
float x, y;
int currentFrameX, currentFrameY;
sf::Clock clock;
};
#endif // Entity_H
未解决的外部
1>Collision.obj : error LNK2019: unresolved external symbol "public: void __thiscall Entity::setX(float)" (?setX@Entity@@QAEXM@Z) referenced in function "public: void __thiscall Collision::Collide(class Entity &,class Entity &)" (?Collide@Collision@@QAEXAAVEntity@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: void __thiscall Entity::setY(float)" (?setY@Entity@@QAEXM@Z) referenced in function "public: void __thiscall Collision::Collide(class Entity &,class Entity &)" (?Collide@Collision@@QAEXAAVEntity@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: int __thiscall Entity::getHeight(void)" (?getHeight@Entity@@QAEHXZ) referenced in function "public: void __thiscall Collision::Collide(class Entity &,class Entity &)" (?Collide@Collision@@QAEXAAVEntity@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: int __thiscall Entity::getWidth(void)" (?getWidth@Entity@@QAEHXZ) referenced in function "public: void __thiscall Collision::Collide(class Entity &,class Entity &)" (?Collide@Collision@@QAEXAAVEntity@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: float __thiscall Entity::getX(void)" (?getX@Entity@@QAEMXZ) referenced in function "public: void __thiscall Collision::Collide(class Entity &,class Entity &)" (?Collide@Collision@@QAEXAAVEntity@@0@Z)
1>Collision.obj : error LNK2019: unresolved external symbol "public: float __thiscall Entity::getY(void)" (?getY@Entity@@QAEMXZ) referenced in function "public: void __thiscall Collision::Collide(class Entity &,class Entity &)" (?Collide@Collision@@QAEXAAVEntity@@0@Z)
我认为在Player / Enemy课程中没有正确重载Entity getX()等是一个问题。
答案 0 :(得分:1)
事实证明Entity.cpp
尚未包含在我的项目中。
谢谢克里斯和西蒙克!