Simple ai shooting PoC (#23)

This commit is contained in:
extrawurst
2025-04-04 23:00:15 +02:00
committed by GitHub
parent 145c30663e
commit e49373061e
11 changed files with 258 additions and 120 deletions

View File

@@ -1,13 +1,7 @@
use super::{Projectile, TriggerGun};
use crate::{
GameState,
aim::AimState,
billboards::Billboard,
loading_assets::GameAssets,
physics_layers::GameLayer,
player::{Player, PlayerRig},
sounds::PlaySound,
utils::sprite_3d_animation::AnimationTimer,
GameState, billboards::Billboard, loading_assets::GameAssets, physics_layers::GameLayer,
sounds::PlaySound, utils::sprite_3d_animation::AnimationTimer,
};
use avian3d::prelude::{
Collider, CollisionLayers, CollisionStarted, LayerMask, PhysicsLayer, Sensor,
@@ -52,8 +46,7 @@ fn setup(mut commands: Commands, assets: Res<GameAssets>, mut sprite_params: Spr
fn on_trigger_state(
trigger: Trigger<TriggerGun>,
mut commands: Commands,
aim: Res<AimState>,
target_transform: Query<&Transform, (Without<Player>, Without<PlayerRig>)>,
query_transform: Query<&Transform>,
time: Res<Time>,
mut polyline_materials: ResMut<Assets<PolylineMaterial>>,
mut polylines: ResMut<Assets<Polyline>>,
@@ -62,8 +55,8 @@ fn on_trigger_state(
commands.trigger(PlaySound::Gun);
let rotation = if let Some(target) = aim.target {
let t = target_transform
let rotation = if let Some(target) = state.target {
let t = query_transform
.get(target)
.expect("target must have transform");
Transform::from_translation(state.pos)
@@ -86,7 +79,7 @@ fn on_trigger_state(
Collider::capsule_endpoints(0.5, Vec3::new(0., 0., 0.), Vec3::new(0., 0., -3.)),
CollisionLayers::new(
LayerMask(GameLayer::Projectile.to_bits()),
LayerMask(GameLayer::Npc.to_bits() | GameLayer::Level.to_bits()),
LayerMask(state.target_layer.to_bits() | GameLayer::Level.to_bits()),
),
Sensor,
Visibility::default(),