Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mini projet
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LE TENOUX--RACHIDI Isham
mini projet
Commits
00882b9f
Commit
00882b9f
authored
Oct 28, 2020
by
LE TENOUX--RACHIDI Isham
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gvipers.imt-lille-douai.fr/isham.le.tenoux/mini-projet
parents
9349ee34
0317b8dc
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
133 deletions
+0
-133
physics_movement.c
physics_movement.c
+0
-133
No files found.
physics_movement.c
deleted
100644 → 0
View file @
9349ee34
/*******************************************************************************************
*
* Physac - Physics movement
*
* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread)
*
* Use the following line to compile:
*
* gcc -o $(NAME_PART).exe $(FILE_NAME) -s -static /
* -lraylib -lpthread -lglfw3 -lopengl32 -lgdi32 -lopenal32 -lwinmm /
* -std=c99 -Wl,--subsystem,windows -Wl,-allow-multiple-definition
*
* Copyright (c) 2016-2018 Victor Fisac
*
********************************************************************************************/
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
#define PHYSAC_NO_THREADS
#include "physac.h"
#define VELOCITY 0.5f
int
main
(
void
)
{
// Initialization
//--------------------------------------------------------------------------------------
const
int
screenWidth
=
800
;
const
int
screenHeight
=
450
;
SetConfigFlags
(
FLAG_MSAA_4X_HINT
);
InitWindow
(
screenWidth
,
screenHeight
,
"Physac [raylib] - Physics movement"
);
// Physac logo drawing position
int
logoX
=
screenWidth
-
MeasureText
(
"Physac"
,
30
)
-
10
;
int
logoY
=
15
;
// Initialize physics and default physics bodies
InitPhysics
();
// Create floor and walls rectangle physics body
PhysicsBody
floor
=
CreatePhysicsBodyRectangle
((
Vector2
){
screenWidth
/
2
,
screenHeight
},
screenWidth
,
100
,
10
);
PhysicsBody
platformLeft
=
CreatePhysicsBodyRectangle
((
Vector2
){
screenWidth
*
0
.
25
f
,
screenHeight
*
0
.
6
f
},
screenWidth
*
0
.
25
f
,
10
,
10
);
PhysicsBody
platformRight
=
CreatePhysicsBodyRectangle
((
Vector2
){
screenWidth
*
0
.
75
f
,
screenHeight
*
0
.
6
f
},
screenWidth
*
0
.
25
f
,
10
,
10
);
PhysicsBody
wallLeft
=
CreatePhysicsBodyRectangle
((
Vector2
){
-
5
,
screenHeight
/
2
},
10
,
screenHeight
,
10
);
PhysicsBody
wallRight
=
CreatePhysicsBodyRectangle
((
Vector2
){
screenWidth
+
5
,
screenHeight
/
2
},
10
,
screenHeight
,
10
);
// Disable dynamics to floor and walls physics bodies
floor
->
enabled
=
false
;
platformLeft
->
enabled
=
false
;
platformRight
->
enabled
=
false
;
wallLeft
->
enabled
=
false
;
wallRight
->
enabled
=
false
;
// Create movement physics body
PhysicsBody
body
=
CreatePhysicsBodyRectangle
((
Vector2
){
screenWidth
/
2
,
screenHeight
/
2
},
50
,
50
,
1
);
body
->
freezeOrient
=
true
;
// Constrain body rotation to avoid little collision torque amounts
SetTargetFPS
(
60
);
// Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while
(
!
WindowShouldClose
())
// Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
RunPhysicsStep
();
if
(
IsKeyPressed
(
'R'
))
// Reset physics input
{
// Reset movement physics body position, velocity and rotation
body
->
position
=
(
Vector2
){
screenWidth
/
2
,
screenHeight
/
2
};
body
->
velocity
=
(
Vector2
){
0
,
0
};
SetPhysicsBodyRotation
(
body
,
0
);
}
// Horizontal movement input
if
(
IsKeyDown
(
KEY_RIGHT
))
body
->
velocity
.
x
=
VELOCITY
;
else
if
(
IsKeyDown
(
KEY_LEFT
))
body
->
velocity
.
x
=
-
VELOCITY
;
// Vertical movement input checking if player physics body is grounded
if
(
IsKeyDown
(
KEY_UP
)
&&
body
->
isGrounded
)
body
->
velocity
.
y
=
-
VELOCITY
*
4
;
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing
();
ClearBackground
(
BLACK
);
DrawFPS
(
screenWidth
-
90
,
screenHeight
-
30
);
// Draw created physics bodies
int
bodiesCount
=
GetPhysicsBodiesCount
();
for
(
int
i
=
0
;
i
<
bodiesCount
;
i
++
)
{
PhysicsBody
body
=
GetPhysicsBody
(
i
);
int
vertexCount
=
GetPhysicsShapeVerticesCount
(
i
);
for
(
int
j
=
0
;
j
<
vertexCount
;
j
++
)
{
// Get physics bodies shape vertices to draw lines
// Note: GetPhysicsShapeVertex() already calculates rotation transformations
Vector2
vertexA
=
GetPhysicsShapeVertex
(
body
,
j
);
int
jj
=
(((
j
+
1
)
<
vertexCount
)
?
(
j
+
1
)
:
0
);
// Get next vertex or first to close the shape
Vector2
vertexB
=
GetPhysicsShapeVertex
(
body
,
jj
);
DrawLineV
(
vertexA
,
vertexB
,
GREEN
);
// Draw a line between two vertex positions
}
}
DrawText
(
"Use 'ARROWS' to move player"
,
10
,
10
,
10
,
WHITE
);
DrawText
(
"Press 'R' to reset example"
,
10
,
30
,
10
,
WHITE
);
DrawText
(
"Physac"
,
logoX
,
logoY
,
30
,
WHITE
);
DrawText
(
"Powered by"
,
logoX
+
50
,
logoY
-
7
,
10
,
WHITE
);
EndDrawing
();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
ClosePhysics
();
// Unitialize physics
CloseWindow
();
// Close window and OpenGL context
//--------------------------------------------------------------------------------------
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment