Removed not needed system and added impulse force to dropped guns
This commit is contained in:
parent
c55bb81fd7
commit
494e99a548
15
Readme.md
15
Readme.md
@ -1,11 +1,18 @@
|
|||||||
# Experimental game
|
# Experimental game
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Things to finish:
|
## Things to finish:
|
||||||
|
### - New Movement System
|
||||||
|
- [ ] Rotations and transforms are based on animations
|
||||||
|
- [ ] Camera is a child of the head
|
||||||
|
- [ ] Figure out how rotation up and down will work, maybe dividing upper and lower body animations
|
||||||
|
- [ ] Shuffling feet when rotating
|
||||||
|
|
||||||
- [ ] Perfect movement
|
- [ ] Perfect movement
|
||||||
- [x] Equipping items
|
- [x] ~~Equipping items~~
|
||||||
- [x] Replace items in the same slot, drop them
|
- [x] ~~Replace items in the same slot, drop them~~
|
||||||
- [ ] When equipping an item that replaces another item because of the slot, throw item towards front of player
|
- [x] When equipping an item that replaces another item because of the slot, throw item towards front of player with a specific impulse
|
||||||
- [ ] Gun aiming and noscope is not the same position
|
- [ ] Gun aiming and noscope is not the same position
|
||||||
- [ ] Controls being bindable
|
- [ ] Controls being bindable
|
||||||
- [ ] Gun moving out of the way on a collision
|
- [ ] Gun moving out of the way on a collision
|
||||||
@ -14,6 +21,8 @@
|
|||||||
- [ ] Persistent magazine data
|
- [ ] Persistent magazine data
|
||||||
- [ ] Perfectly center interact clue text on screen
|
- [ ] Perfectly center interact clue text on screen
|
||||||
- [ ] Fix: No Sprinting while aiming
|
- [ ] Fix: No Sprinting while aiming
|
||||||
|
- [x] ~~FIX: Gun spawning way in front of player~~
|
||||||
|
- [ ] Player is rotating on an axis that it shouldn't
|
||||||
|
|
||||||
|
|
||||||
- [ ] Fix: Make gun have more priority in rendering. So it doesn't clip through walls
|
- [ ] Fix: Make gun have more priority in rendering. So it doesn't clip through walls
|
||||||
|
@ -33,6 +33,7 @@ pub trait Item: Sync + Send {
|
|||||||
transform: Transform,
|
transform: Transform,
|
||||||
assets_gltf: &GltfAssets,
|
assets_gltf: &GltfAssets,
|
||||||
loaded_gltf_assets: &Assets<Gltf>,
|
loaded_gltf_assets: &Assets<Gltf>,
|
||||||
|
with_impulse: Vec3,
|
||||||
) {
|
) {
|
||||||
match self.get_type() {
|
match self.get_type() {
|
||||||
ItemType::Holdable(object_type) => {
|
ItemType::Holdable(object_type) => {
|
||||||
@ -89,6 +90,10 @@ pub trait Item: Sync + Send {
|
|||||||
firearm_size.y,
|
firearm_size.y,
|
||||||
firearm_size.z,
|
firearm_size.z,
|
||||||
),
|
),
|
||||||
|
ExternalImpulse {
|
||||||
|
impulse: with_impulse,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
Interactable::Item(firearm.get_item_arc()),
|
Interactable::Item(firearm.get_item_arc()),
|
||||||
))
|
))
|
||||||
.push_children(&[firearm_asset_entity]);
|
.push_children(&[firearm_asset_entity]);
|
||||||
|
@ -30,6 +30,7 @@ pub fn item_spawner(
|
|||||||
component_sp.get_transform(),
|
component_sp.get_transform(),
|
||||||
&assets_gltf,
|
&assets_gltf,
|
||||||
&loaded_gltf_assets,
|
&loaded_gltf_assets,
|
||||||
|
Vec3::ZERO,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
//m4.spawn(&mut commands, item_sp.at, &assets_gltf, &loaded_gltf_assets);
|
//m4.spawn(&mut commands, item_sp.at, &assets_gltf, &loaded_gltf_assets);
|
||||||
|
@ -51,7 +51,7 @@ pub fn player_spawner(
|
|||||||
let player_hand = commands
|
let player_hand = commands
|
||||||
.spawn((PlayerHand, Name::new("Player Hand")))
|
.spawn((PlayerHand, Name::new("Player Hand")))
|
||||||
.insert(TransformBundle::from(Transform::from_xyz(
|
.insert(TransformBundle::from(Transform::from_xyz(
|
||||||
0.6, -0.45, -20.0,
|
0.6, -0.45, 0.0,
|
||||||
)))
|
)))
|
||||||
.insert(VisibilityBundle {
|
.insert(VisibilityBundle {
|
||||||
visibility: Visibility::Inherited,
|
visibility: Visibility::Inherited,
|
||||||
|
@ -5,16 +5,15 @@ use crate::{
|
|||||||
comps::core::{
|
comps::core::{
|
||||||
events::pickup_item::PickupItemEvent,
|
events::pickup_item::PickupItemEvent,
|
||||||
inventory::player_inventory::PlayerInventory,
|
inventory::player_inventory::PlayerInventory,
|
||||||
items::item::ItemType,
|
|
||||||
markers::{
|
markers::{
|
||||||
camera::MainCamera,
|
camera::MainCamera,
|
||||||
firearm::{FirearmData, MagazineData},
|
firearm::{FirearmData, MagazineData},
|
||||||
holdable::{HoldableObjectType, InPlayerHands},
|
holdable::InPlayerHands,
|
||||||
interactable::Interactable,
|
interactable::Interactable,
|
||||||
player::{Player, PlayerHand},
|
player::{Player, PlayerHand},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
logic::core::guns::{firearm::Firearm, player_firing::PlayerFiringInfo, shoot::shoot_bullet},
|
logic::core::guns::{player_firing::PlayerFiringInfo, shoot::shoot_bullet},
|
||||||
setup::{
|
setup::{
|
||||||
animations::AllFirearmAnimations,
|
animations::AllFirearmAnimations,
|
||||||
equipment::{Equipment, EquipmentChangeEvent},
|
equipment::{Equipment, EquipmentChangeEvent},
|
||||||
|
@ -29,6 +29,14 @@ pub fn update_player_inventory_system(
|
|||||||
.entity(event.entity)
|
.entity(event.entity)
|
||||||
.despawn_descendants()
|
.despawn_descendants()
|
||||||
.despawn();
|
.despawn();
|
||||||
|
let drop_position = Transform::from_translation(
|
||||||
|
player_transform.translation
|
||||||
|
+ player_transform.up() * 3.0
|
||||||
|
+ player_transform.forward() * 2.0,
|
||||||
|
);
|
||||||
|
let drop_impulse = player_transform.translation
|
||||||
|
+ player_transform.up() * 100.0
|
||||||
|
+ player_transform.forward() * 30.0;
|
||||||
match firearm.firearm_data().firearm_type {
|
match firearm.firearm_data().firearm_type {
|
||||||
FirearmType::Primary => {
|
FirearmType::Primary => {
|
||||||
// Send equipment_changed_event
|
// Send equipment_changed_event
|
||||||
@ -36,13 +44,10 @@ pub fn update_player_inventory_system(
|
|||||||
// Drop this one
|
// Drop this one
|
||||||
primary_item.spawn(
|
primary_item.spawn(
|
||||||
&mut commands,
|
&mut commands,
|
||||||
Transform::from_translation(
|
drop_position,
|
||||||
player_transform.translation
|
|
||||||
+ player_transform.up() * 5.0
|
|
||||||
+ player_transform.forward(),
|
|
||||||
),
|
|
||||||
&assets_gltf,
|
&assets_gltf,
|
||||||
&loaded_gltf_assets,
|
&loaded_gltf_assets,
|
||||||
|
drop_impulse,
|
||||||
);
|
);
|
||||||
player_inventory.primary.item =
|
player_inventory.primary.item =
|
||||||
Some(firearm.get_item_box())
|
Some(firearm.get_item_box())
|
||||||
@ -55,13 +60,10 @@ pub fn update_player_inventory_system(
|
|||||||
if let Some(secondary) = player_inventory.get_secondary() {
|
if let Some(secondary) = player_inventory.get_secondary() {
|
||||||
secondary.spawn(
|
secondary.spawn(
|
||||||
&mut commands,
|
&mut commands,
|
||||||
Transform::from_translation(
|
drop_position,
|
||||||
player_transform.translation
|
|
||||||
+ player_transform.up() * 5.0
|
|
||||||
+ player_transform.forward(),
|
|
||||||
),
|
|
||||||
&assets_gltf,
|
&assets_gltf,
|
||||||
&loaded_gltf_assets,
|
&loaded_gltf_assets,
|
||||||
|
drop_impulse,
|
||||||
);
|
);
|
||||||
player_inventory.secondary.item =
|
player_inventory.secondary.item =
|
||||||
Some(firearm.get_item_box())
|
Some(firearm.get_item_box())
|
||||||
|
@ -26,7 +26,7 @@ use crate::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ground::spawn_ground, items::spawn_items, lighting::setup_lighting, obstacles::spawn_obstacles,
|
ground::spawn_ground, lighting::setup_lighting, obstacles::spawn_obstacles,
|
||||||
skybox::set_skybox_if_loaded, spawn_points::set_spawn_points,
|
skybox::set_skybox_if_loaded, spawn_points::set_spawn_points,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ pub fn load_scene(application: &mut App) {
|
|||||||
application.add_systems(Startup, spawn_ground);
|
application.add_systems(Startup, spawn_ground);
|
||||||
application.add_systems(
|
application.add_systems(
|
||||||
Startup,
|
Startup,
|
||||||
(spawn_obstacles, spawn_items.after(load_all_assets)),
|
spawn_obstacles,
|
||||||
);
|
);
|
||||||
application.add_systems(Startup, setup_lighting);
|
application.add_systems(Startup, setup_lighting);
|
||||||
application.add_systems(Startup, set_spawn_points);
|
application.add_systems(Startup, set_spawn_points);
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
use bevy::{gltf::Gltf, prelude::*};
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
comps::core::items::{guns::m4a1::M4a1GunItem, item::Item},
|
|
||||||
setup::assets::GltfAssets,
|
|
||||||
};
|
|
||||||
|
|
||||||
pub fn spawn_items(
|
|
||||||
mut commands: Commands,
|
|
||||||
assets_gltf: Res<GltfAssets>,
|
|
||||||
loaded_gltf_assets: Res<Assets<Gltf>>,
|
|
||||||
) {
|
|
||||||
let transform = Transform::from_xyz(20.0, 1.0, 10.0);
|
|
||||||
let m4item = M4a1GunItem;
|
|
||||||
m4item.spawn(&mut commands, transform, &assets_gltf, &loaded_gltf_assets);
|
|
||||||
}
|
|
@ -1,7 +1,6 @@
|
|||||||
pub mod init;
|
pub mod init;
|
||||||
|
|
||||||
pub mod ground;
|
pub mod ground;
|
||||||
pub mod items;
|
|
||||||
pub mod lighting;
|
pub mod lighting;
|
||||||
pub mod obstacles;
|
pub mod obstacles;
|
||||||
pub mod skybox;
|
pub mod skybox;
|
||||||
|
Loading…
Reference in New Issue
Block a user