minigun special attack
This commit is contained in:
parent
eac8f75da8
commit
aeb2cf2b23
2
main.c
2
main.c
|
@ -125,6 +125,8 @@ int main(void)
|
|||
|
||||
Camera2D effect_camera = camera;
|
||||
effect_camera.offset = Vector2Add(effect_camera.offset, cam_shake);
|
||||
if (player_type == PLAYER_MINIGUN)
|
||||
process_minigun(Vector2Add(SCREEN_MIDDLE, cam_shake), &camera, &effect_camera);
|
||||
BeginMode2D(effect_camera);
|
||||
{
|
||||
DrawTexture(map.texture, map.box.x, map.box.y, WHITE);
|
||||
|
|
33
minigun.c
33
minigun.c
|
@ -16,9 +16,29 @@ float minigun_radius()
|
|||
return fmax(minigun_texture.width, minigun_texture.height)/2;
|
||||
}
|
||||
|
||||
void process_minigun(Vector2 pos, Camera2D *real_cam, Camera2D *effect_cam)
|
||||
{
|
||||
if (key_down(KC_SPECIAL)) {
|
||||
int force = 5;
|
||||
effect_cam->offset.x += GetRandomValue(-force/2, force/2);
|
||||
effect_cam->offset.y += GetRandomValue(-force/2, force/2);
|
||||
}
|
||||
else if (key_down(KC_SHOOT)) {
|
||||
int speed = 5;
|
||||
float angle = -Vector2LineAngle(pos, GetMousePosition());
|
||||
angle *= 180/PI;
|
||||
Vector2 world = GetScreenToWorld2D(pos, *real_cam);
|
||||
Vector2 toward = Vector2Normalize((Vector2) {cos(angle * PI/180), sin(angle * PI/180)});
|
||||
real_cam->target = Vector2Subtract(world, Vector2Scale(toward, speed));
|
||||
|
||||
bullet_spawn(BULLET_MINIGUN, Vector2Subtract(world, Vector2Scale(toward, speed*1.0)), angle);
|
||||
bullet_spawn(BULLET_MINIGUN, Vector2Subtract(world, Vector2Scale(toward, speed*6.0)), angle);
|
||||
}
|
||||
}
|
||||
|
||||
void draw_minigun(Vector2 pos, Camera2D *cam)
|
||||
{
|
||||
|
||||
(void) cam;
|
||||
Texture m = minigun_texture;
|
||||
Rectangle source = {0, 0, m.width, m.height};
|
||||
Rectangle dest = {pos.x, pos.y, m.width, m.height};
|
||||
|
@ -26,15 +46,8 @@ void draw_minigun(Vector2 pos, Camera2D *cam)
|
|||
float angle = -Vector2LineAngle(pos, GetMousePosition());
|
||||
angle *= 180/PI;
|
||||
|
||||
if (key_down(KC_SHOOT)) {
|
||||
int speed = 5;
|
||||
Vector2 world = GetScreenToWorld2D(pos, *cam);
|
||||
Vector2 toward = Vector2Normalize((Vector2) {cos(angle * PI/180), sin(angle * PI/180)});
|
||||
cam->target = Vector2Subtract(world, Vector2Scale(toward, speed));
|
||||
|
||||
bullet_spawn(BULLET_MINIGUN, Vector2Subtract(world, Vector2Scale(toward, speed*1.0)), angle);
|
||||
bullet_spawn(BULLET_MINIGUN, Vector2Subtract(world, Vector2Scale(toward, speed*6.0)), angle);
|
||||
}
|
||||
if (key_down(KC_SPECIAL))
|
||||
DrawLineEx(pos, GetMousePosition(), 10, RED);
|
||||
|
||||
DrawTexturePro(m, source, dest, origin, angle + 90, WHITE);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue