Fixed Gun dropping drops on only one side of player but impulse is not applied. Fix next
This commit is contained in:
parent
93a0fd88e4
commit
f910f4005b
@ -49,7 +49,8 @@ Multiplayer
|
|||||||
- [ ] Real world magazines
|
- [ ] Real world magazines
|
||||||
- [ ] Rewriting bullet physics to use raycasts & kinematic rigidbodies (logic controlled)
|
- [ ] Rewriting bullet physics to use raycasts & kinematic rigidbodies (logic controlled)
|
||||||
- [x] Create a Controls struct that holds mappings to all the game keys and replace them in all the game's code
|
- [x] Create a Controls struct that holds mappings to all the game keys and replace them in all the game's code
|
||||||
|
- [x] Gun dropping drops on only one side of player
|
||||||
|
- [ ] TODO: Gun dropping does not apply impulse for some reason...
|
||||||
|
|
||||||
# Design
|
# Design
|
||||||
|
|
||||||
|
@ -90,13 +90,19 @@ pub fn drop_slot_in_game_world(
|
|||||||
slot: PlayerInventorySlotType,
|
slot: PlayerInventorySlotType,
|
||||||
item_state: Option<ItemState>,
|
item_state: Option<ItemState>,
|
||||||
) {
|
) {
|
||||||
let drop_position = Transform::from_translation(
|
let mut drop_position = Transform::from_translation(
|
||||||
player_transform.translation
|
player_transform.translation
|
||||||
+ player_transform.up() * 5.0
|
+ player_transform.up() * 5.0
|
||||||
|
+ player_transform.forward() * 5.0
|
||||||
);
|
);
|
||||||
|
drop_position.rotation = player_transform.rotation;
|
||||||
|
//drop_position.rotate_y(90.0f32.to_radians());
|
||||||
|
drop_position.rotate_y(-90.0f32.to_radians());
|
||||||
|
drop_position.rotate_x(45.0f32.to_radians());
|
||||||
|
drop_position.rotate_z(45.0f32.to_radians());
|
||||||
let drop_impulse = player_transform.translation
|
let drop_impulse = player_transform.translation
|
||||||
+ player_transform.up() * 100.0
|
+ (player_transform.up() * 1000000.0)
|
||||||
+ player_transform.forward() * 30.0;
|
+ (player_transform.forward() * 3000000.0);
|
||||||
|
|
||||||
let item_inventory_slot = match slot {
|
let item_inventory_slot = match slot {
|
||||||
PlayerInventorySlotType::Primary => {
|
PlayerInventorySlotType::Primary => {
|
||||||
|
@ -118,7 +118,7 @@ impl Item for Ak105GunItem {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
RigidBody::Dynamic,
|
RigidBody::Dynamic,
|
||||||
ColliderMassProperties::Mass(5.0),
|
ColliderMassProperties::Mass(0.1),
|
||||||
GravityScale(4.0),
|
GravityScale(4.0),
|
||||||
ExternalImpulse {
|
ExternalImpulse {
|
||||||
impulse: with_impulse,
|
impulse: with_impulse,
|
||||||
|
@ -10,6 +10,7 @@ bitflags! {
|
|||||||
const GUNS = 0b00000010;
|
const GUNS = 0b00000010;
|
||||||
/// The value `C`, at bit position `2`.
|
/// The value `C`, at bit position `2`.
|
||||||
const SOLIDS = 0b00000100;
|
const SOLIDS = 0b00000100;
|
||||||
|
const PLAYER = 0b00001000;
|
||||||
|
|
||||||
const ALL = u32::MAX;
|
const ALL = u32::MAX;
|
||||||
const NONE = 0;
|
const NONE = 0;
|
||||||
|
@ -4,7 +4,7 @@ use bevy_rapier3d::prelude::*;
|
|||||||
use crate::{
|
use crate::{
|
||||||
comps::core::{
|
comps::core::{
|
||||||
inventory::player_inventory::PlayerInventory,
|
inventory::player_inventory::PlayerInventory,
|
||||||
markers::player::{Player, PlayerData},
|
markers::{player::{Player, PlayerData}, collider_flags::ColliderFlags},
|
||||||
},
|
},
|
||||||
logic::core::{
|
logic::core::{
|
||||||
guns::player_firing::PlayerFiringInfo,
|
guns::player_firing::PlayerFiringInfo,
|
||||||
@ -104,6 +104,7 @@ pub fn player_spawner(
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
// Data
|
// Data
|
||||||
|
.insert(CollisionGroups::new(Group::from_bits_retain(ColliderFlags::PLAYER.bits()), Group::from_bits_retain(ColliderFlags::SOLIDS.bits())))
|
||||||
.insert(PlayerFiringInfo::default())
|
.insert(PlayerFiringInfo::default())
|
||||||
.insert(PlayerInventory::default())
|
.insert(PlayerInventory::default())
|
||||||
.add_child(player_scene);
|
.add_child(player_scene);
|
||||||
|
Loading…
Reference in New Issue
Block a user