njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin_body.h
1#pragma once
2#include "_types.h"
3#include <entt/entity/entity.hpp>
4#include <vector>
5
6namespace njin {
7struct context;
8
11
18 f32 move_x = 0.0f;
19 bool jump = false;
20 bool jump_held = false;
21 bool drop = false;
22};
23
45 // --- chỉnh cảm giác ---
46 f32 run_speed = 110.0f;
47 f32 ground_accel = 1200.0f;
48 f32 ground_decel = 1600.0f;
49 f32 air_accel = 800.0f;
50 f32 air_decel = 500.0f;
51 f32 gravity = 1000.0f;
52 f32 fall_gravity = 1600.0f;
53 f32 max_fall = 360.0f;
54 f32 jump_speed = 300.0f;
55 f32 jump_cut = 0.45f;
56 f32 coyote_time = 0.09f;
57 f32 jump_buffer = 0.12f;
60 vec2 wall_jump{0.0f, 0.0f};
62
64
65 // --- trạng thái, engine ghi ---
67 bool grounded = false;
68 bool on_slope = false;
70 i32 facing = 1;
71 entt::entity ground = entt::null;
72 bool jumped = false;
73 bool landed = false;
74
75 // --- bên trong ---
78 f32 drop_timer = 0.0f;
81 bool rising = false;
82 bool ground_one_way = false;
83};
84
88 bool dash = false;
89};
90
98 f32 speed = 90.0f;
99 f32 accel = 900.0f;
100 f32 decel = 1300.0f;
102 f32 dash_time = 0.14f;
104
106
108 vec2 facing{0.0f, 1.0f};
109 bool moving = false;
110 bool dashing = false;
113};
114
124
131
139 std::vector<vec2> points;
140 f32 speed = 40.0f;
141 f32 wait = 0.0f;
144 bool loop = false;
145 bool paused = false;
149};
150
153 entt::entity entity = entt::null;
154 bool from_air = false;
155 bool from_wall = false;
156};
157
160 entt::entity entity = entt::null;
161 f32 speed = 0.0f;
162};
163
166 entt::entity entity = entt::null;
168};
169
170} // namespace njin
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
float f32
Số thực 32 bit.
Definition _types.h:28
Định danh của một action nhập liệu, tạo bởi action_register().
Definition _types.h:85
Định danh của một axis nhập liệu, tạo bởi axis_register().
Definition _types.h:93
Event: một njin::topdown_body vừa bắt đầu lướt.
Definition njin_body.h:165
entt::entity entity
Nhân vật.
Definition njin_body.h:166
vec2 direction
Hướng lướt, độ dài 1.
Definition njin_body.h:167
Event: một njin::platformer_body vừa nhảy (cả nhảy trên không, nhảy tường).
Definition njin_body.h:152
bool from_air
Nhảy trên không (nhảy đôi).
Definition njin_body.h:154
bool from_wall
Nhảy khỏi tường.
Definition njin_body.h:155
entt::entity entity
Nhân vật.
Definition njin_body.h:153
Event: một njin::platformer_body vừa chạm đất.
Definition njin_body.h:159
entt::entity entity
Nhân vật.
Definition njin_body.h:160
f32 speed
Tốc độ rơi lúc chạm đất: để rung màn hình khi rơi mạnh.
Definition njin_body.h:161
Cho một entity đi theo một đường gấp khúc lặp lại: bục di chuyển, lính gác, cưa chạy ray.
Definition njin_body.h:138
f32 wait
Giây dừng lại ở mỗi điểm.
Definition njin_body.h:141
bool loop
true: đi hết rồi quay về điểm đầu (vòng kín).
Definition njin_body.h:144
i32 direction
Chiều đi qua danh sách, khi loop là false.
Definition njin_body.h:147
std::vector< vec2 > points
Các điểm, trong thế giới. Ít nhất hai.
Definition njin_body.h:139
f32 speed
Tốc độ, pixel mỗi giây.
Definition njin_body.h:140
bool paused
Dừng tạm.
Definition njin_body.h:145
f32 wait_timer
Thời gian dừng còn lại.
Definition njin_body.h:148
i32 target
Điểm đang đi tới.
Definition njin_body.h:146
Nhân vật platformer: chạy, nhảy, rơi, trèo dốc, đứng trên bục di chuyển.
Definition njin_body.h:44
f32 jump_buffer
Giây nhớ lệnh nhảy bấm sớm.
Definition njin_body.h:57
f32 gravity
Gia tốc rơi khi đang lên.
Definition njin_body.h:51
f32 fall_gravity
Gia tốc rơi khi đang xuống. Lớn hơn gravity cho cú nhảy chắc tay.
Definition njin_body.h:52
bool grounded
Đang đứng trên đất, dốc hoặc bục.
Definition njin_body.h:67
bool jumped
Vừa nhảy trong nhịp vật lý cuối cùng.
Definition njin_body.h:72
bool rising
Đang lên từ một cú nhảy mà nút còn được giữ.
Definition njin_body.h:81
i32 air_jumps
Số lần nhảy thêm trên không. 1 là nhảy đôi.
Definition njin_body.h:58
f32 jump_cut
Nhân vào vận tốc lên khi thả nút nhảy sớm. 1 là tắt.
Definition njin_body.h:55
f32 max_fall
Tốc độ rơi tối đa.
Definition njin_body.h:53
f32 wall_slide_speed
Tốc độ trượt tường khi áp vào tường lúc rơi. 0 là tắt.
Definition njin_body.h:59
f32 air_decel
Giảm tốc trên không.
Definition njin_body.h:50
f32 run_speed
Tốc độ chạy tối đa.
Definition njin_body.h:46
i32 on_wall
-1 áp tường bên trái, 1 bên phải, 0 không.
Definition njin_body.h:69
entt::entity ground
Entity đang đứng lên (tilemap hoặc bục).
Definition njin_body.h:71
f32 ground_accel
Tăng tốc trên đất.
Definition njin_body.h:47
vec2 wall_jump
Vận tốc khi nhảy khỏi tường (x ra xa tường, y lên). 0 là tắt.
Definition njin_body.h:60
f32 coyote_timer
Thời gian coyote còn lại.
Definition njin_body.h:76
f32 wall_jump_lock
Giây bỏ qua move_x sau khi nhảy tường, để bật ra được.
Definition njin_body.h:61
f32 coyote_time
Giây sau khi rời mép vẫn nhảy được.
Definition njin_body.h:56
f32 jump_speed
Vận tốc lên lúc bắt đầu nhảy.
Definition njin_body.h:54
vec2 velocity
Vận tốc hiện tại. Game được ghi (đẩy lùi, lò xo).
Definition njin_body.h:66
f32 drop_timer
Thời gian còn xuyên bục một chiều.
Definition njin_body.h:78
i32 facing
Hướng nhìn: -1 trái, 1 phải. Theo input.move_x.
Definition njin_body.h:70
platformer_input input
Điều khiển, game ghi vào.
Definition njin_body.h:63
bool ground_one_way
Mặt đang đứng là bục một chiều.
Definition njin_body.h:82
bool landed
Vừa chạm đất trong nhịp vật lý cuối cùng.
Definition njin_body.h:73
f32 wall_lock_timer
Thời gian còn bỏ qua move_x sau nhảy tường.
Definition njin_body.h:79
f32 ground_decel
Giảm tốc trên đất khi thả nút (hoặc đổi hướng).
Definition njin_body.h:48
bool on_slope
Đang đứng trên dốc.
Definition njin_body.h:68
f32 buffer_timer
Thời gian lệnh nhảy còn được nhớ.
Definition njin_body.h:77
i32 air_jumps_left
Số lần nhảy trên không còn lại.
Definition njin_body.h:80
f32 air_accel
Tăng tốc trên không.
Definition njin_body.h:49
Gắn action và axis vào một njin::platformer_body: module body đọc chúng trong phase_pre_update và ghi...
Definition njin_body.h:119
action_handle jump
Nhảy.
Definition njin_body.h:121
action_handle down
Giữ để nhảy xuống khỏi bục. Có thể để trống.
Definition njin_body.h:122
axis_handle move
Trục ngang (phím trái/phải, cần trái).
Definition njin_body.h:120
Nút và cần điều khiển của một njin::platformer_body, game ghi vào mỗi frame.
Definition njin_body.h:17
f32 move_x
Hướng chạy, -1 (trái) đến 1 (phải).
Definition njin_body.h:18
bool jump_held
Nút nhảy đang được giữ. Thả sớm thì nhảy thấp.
Definition njin_body.h:20
bool jump
Yêu cầu nhảy. Đặt ở frame bấm nút nhảy.
Definition njin_body.h:19
bool drop
Yêu cầu nhảy xuống khỏi bục một chiều đang đứng.
Definition njin_body.h:21
Nhân vật top-down: đi 8 hướng (hoặc mọi hướng với cần analog), trượt dọc tường, lướt.
Definition njin_body.h:97
bool dashing
Đang lướt.
Definition njin_body.h:110
vec2 facing
Hướng nhìn, độ dài 1: hướng đi gần nhất khác 0.
Definition njin_body.h:108
f32 decel
Giảm tốc khi thả nút.
Definition njin_body.h:100
topdown_input input
Điều khiển, game ghi vào.
Definition njin_body.h:105
f32 speed
Tốc độ đi tối đa.
Definition njin_body.h:98
f32 dash_speed
Tốc độ lướt. 0 là tắt lướt.
Definition njin_body.h:101
f32 cooldown_timer
Thời gian chờ lướt còn lại.
Definition njin_body.h:112
f32 dash_cooldown
Giây phải chờ giữa hai lần lướt, tính từ lúc bắt đầu.
Definition njin_body.h:103
bool moving
Đang đi (vận tốc khác 0).
Definition njin_body.h:109
vec2 velocity
Vận tốc hiện tại. Game được ghi.
Definition njin_body.h:107
f32 accel
Tăng tốc.
Definition njin_body.h:99
f32 dash_timer
Thời gian lướt còn lại.
Definition njin_body.h:111
f32 dash_time
Thời gian một lần lướt, giây.
Definition njin_body.h:102
Gắn action và axis vào một njin::topdown_body, như njin::platformer_input_map.
Definition njin_body.h:126
axis_handle move_y
Trục dọc (dương là xuống).
Definition njin_body.h:128
axis_handle move_x
Trục ngang.
Definition njin_body.h:127
action_handle dash
Lướt. Có thể để trống.
Definition njin_body.h:129
Nút và cần điều khiển của một njin::topdown_body.
Definition njin_body.h:86
vec2 move
Hướng đi. Độ dài lớn hơn 1 được đưa về 1, nên đi chéo không nhanh hơn.
Definition njin_body.h:87
bool dash
Yêu cầu lướt. Đặt ở frame bấm; bộ điều khiển tự xóa.
Definition njin_body.h:88
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39