Collision detection (much better and finished)
This commit is contained in:
parent
556ccd976e
commit
e0508c2a44
2
Makefile
2
Makefile
|
@ -6,7 +6,7 @@ CC = g++
|
|||
|
||||
COMPILER_FLAGS = -w
|
||||
|
||||
LINKER_FLAGS = -lSDL2 -std=gnu++11
|
||||
LINKER_FLAGS = -lSDL2 -std=gnu++11 -lSDL2_image
|
||||
|
||||
OBJ_NAME = bin/main
|
||||
|
||||
|
|
10
camera.cpp
10
camera.cpp
|
@ -2,10 +2,16 @@
|
|||
|
||||
#include"camera.h"
|
||||
|
||||
Camera::Camera(int mapWidth,int screenWidth){
|
||||
mW = mapWidth;
|
||||
scW = screenWidth;
|
||||
}
|
||||
|
||||
void Camera::update(int playerX, int playerY){
|
||||
//Make the camera when the player hits the middle of the screem
|
||||
if(true) posX = playerX - 640/2;
|
||||
//else posX = 0;
|
||||
if(playerX >= scW/2) posX = playerX - scW/2;
|
||||
else posX = 0;
|
||||
if(playerX >= mW - scW/2) posX = mW - scW;
|
||||
|
||||
//posY = playerY;
|
||||
};
|
||||
|
|
2
camera.h
2
camera.h
|
@ -5,11 +5,13 @@
|
|||
|
||||
class Camera{
|
||||
public:
|
||||
Camera(int mapWidth,int screenWidth);
|
||||
void update(int playerX, int playerY);
|
||||
int getPosX();
|
||||
int getPosY();
|
||||
private:
|
||||
int posX, posY;
|
||||
int mW, scW;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
12
main.cpp
12
main.cpp
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include<iostream>
|
||||
#include<SDL2/SDL.h>
|
||||
//#include<SDL2/SDL_image.h>
|
||||
#include"player.h"
|
||||
#include"block.h"
|
||||
#include"camera.h"
|
||||
|
@ -19,9 +20,6 @@ void init();
|
|||
bool loadMedia();
|
||||
void close();
|
||||
|
||||
Player posweg;
|
||||
Camera camera;
|
||||
|
||||
bool loadMedia(){
|
||||
bool success = true;
|
||||
|
||||
|
@ -52,11 +50,15 @@ int main(int argc, char* args[]){
|
|||
|
||||
bool quit = false;
|
||||
SDL_Event e;
|
||||
|
||||
Player posweg;
|
||||
Camera camera(36*sz,SCREEN_WIDTH);
|
||||
|
||||
Block wallA(8*sz,SCREEN_HEIGHT-sz*5,sz*2,sz*2,&gRenderer);
|
||||
Block wallB(4*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer);
|
||||
Block wallC(6*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer);
|
||||
Block ground(0,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer);
|
||||
Block ground2(SCREEN_WIDTH+sz*4,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer);
|
||||
|
||||
posweg.init(100,100,sz,sz,&gRenderer);
|
||||
|
||||
|
@ -78,12 +80,14 @@ int main(int argc, char* args[]){
|
|||
wallB.print(camera.getPosX());
|
||||
wallC.print(camera.getPosX());
|
||||
ground.print(camera.getPosX());
|
||||
ground2.print(camera.getPosX());
|
||||
|
||||
posweg.check(wallA.getRectangle());
|
||||
posweg.check(wallB.getRectangle());
|
||||
posweg.check(wallC.getRectangle());
|
||||
posweg.check(ground.getRectangle());
|
||||
|
||||
posweg.check(ground2.getRectangle());
|
||||
|
||||
SDL_RenderPresent(gRenderer);
|
||||
}
|
||||
close();
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include"player.h"
|
||||
|
||||
void Player::print(int cameraX){
|
||||
rect = {posX,posY,szW,szH};
|
||||
|
||||
SDL_Rect cameraFix = rect;
|
||||
cameraFix.x -= cameraX;
|
||||
|
@ -96,6 +95,8 @@ void Player::move(){
|
|||
//Convert and set new int position
|
||||
posX += static_cast<int>(x);
|
||||
posY -= static_cast<int>(y+0.5);
|
||||
|
||||
rect = {posX,posY,szW,szH};
|
||||
};
|
||||
|
||||
int Player::check(SDL_Rect rectA){
|
||||
|
|
Loading…
Reference in New Issue