diff --git a/DungeonShooting_Godot/export_presets.cfg b/DungeonShooting_Godot/export_presets.cfg index 540aecb..c726e26 100644 --- a/DungeonShooting_Godot/export_presets.cfg +++ b/DungeonShooting_Godot/export_presets.cfg @@ -64,3 +64,208 @@ capabilities/microphone=false capabilities/proximity=false capabilities/webcam=false + +[preset.1] + +name="Android" +platform="Android" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="" +script_export_mode=1 +script_encryption_key="" + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +custom_template/use_custom_build=false +custom_template/export_format=0 +architectures/armeabi-v7a=true +architectures/arm64-v8a=true +architectures/x86=false +architectures/x86_64=false +keystore/debug="" +keystore/debug_user="" +keystore/debug_password="" +keystore/release="" +keystore/release_user="" +keystore/release_password="" +one_click_deploy/clear_previous_install=false +version/code=1 +version/name="1.0" +version/min_sdk=19 +version/target_sdk=30 +package/unique_name="org.godotengine.$genname" +package/name="" +package/signed=true +package/classify_as_game=true +package/retain_data_on_uninstall=false +package/exclude_from_recents=false +launcher_icons/main_192x192="" +launcher_icons/adaptive_foreground_432x432="" +launcher_icons/adaptive_background_432x432="" +graphics/opengl_debug=false +xr_features/xr_mode=0 +xr_features/hand_tracking=0 +xr_features/hand_tracking_frequency=0 +xr_features/passthrough=0 +screen/immersive_mode=true +screen/support_small=true +screen/support_normal=true +screen/support_large=true +screen/support_xlarge=true +user_data_backup/allow=false +command_line/extra_args="" +apk_expansion/enable=false +apk_expansion/SALT="" +apk_expansion/public_key="" +permissions/custom_permissions=PoolStringArray( ) +permissions/access_checkin_properties=false +permissions/access_coarse_location=false +permissions/access_fine_location=false +permissions/access_location_extra_commands=false +permissions/access_mock_location=false +permissions/access_network_state=false +permissions/access_surface_flinger=false +permissions/access_wifi_state=false +permissions/account_manager=false +permissions/add_voicemail=false +permissions/authenticate_accounts=false +permissions/battery_stats=false +permissions/bind_accessibility_service=false +permissions/bind_appwidget=false +permissions/bind_device_admin=false +permissions/bind_input_method=false +permissions/bind_nfc_service=false +permissions/bind_notification_listener_service=false +permissions/bind_print_service=false +permissions/bind_remoteviews=false +permissions/bind_text_service=false +permissions/bind_vpn_service=false +permissions/bind_wallpaper=false +permissions/bluetooth=false +permissions/bluetooth_admin=false +permissions/bluetooth_privileged=false +permissions/brick=false +permissions/broadcast_package_removed=false +permissions/broadcast_sms=false +permissions/broadcast_sticky=false +permissions/broadcast_wap_push=false +permissions/call_phone=false +permissions/call_privileged=false +permissions/camera=false +permissions/capture_audio_output=false +permissions/capture_secure_video_output=false +permissions/capture_video_output=false +permissions/change_component_enabled_state=false +permissions/change_configuration=false +permissions/change_network_state=false +permissions/change_wifi_multicast_state=false +permissions/change_wifi_state=false +permissions/clear_app_cache=false +permissions/clear_app_user_data=false +permissions/control_location_updates=false +permissions/delete_cache_files=false +permissions/delete_packages=false +permissions/device_power=false +permissions/diagnostic=false +permissions/disable_keyguard=false +permissions/dump=false +permissions/expand_status_bar=false +permissions/factory_test=false +permissions/flashlight=false +permissions/force_back=false +permissions/get_accounts=false +permissions/get_package_size=false +permissions/get_tasks=false +permissions/get_top_activity_info=false +permissions/global_search=false +permissions/hardware_test=false +permissions/inject_events=false +permissions/install_location_provider=false +permissions/install_packages=false +permissions/install_shortcut=false +permissions/internal_system_window=false +permissions/internet=false +permissions/kill_background_processes=false +permissions/location_hardware=false +permissions/manage_accounts=false +permissions/manage_app_tokens=false +permissions/manage_documents=false +permissions/master_clear=false +permissions/media_content_control=false +permissions/modify_audio_settings=false +permissions/modify_phone_state=false +permissions/mount_format_filesystems=false +permissions/mount_unmount_filesystems=false +permissions/nfc=false +permissions/persistent_activity=false +permissions/process_outgoing_calls=false +permissions/read_calendar=false +permissions/read_call_log=false +permissions/read_contacts=false +permissions/read_external_storage=false +permissions/read_frame_buffer=false +permissions/read_history_bookmarks=false +permissions/read_input_state=false +permissions/read_logs=false +permissions/read_phone_state=false +permissions/read_profile=false +permissions/read_sms=false +permissions/read_social_stream=false +permissions/read_sync_settings=false +permissions/read_sync_stats=false +permissions/read_user_dictionary=false +permissions/reboot=false +permissions/receive_boot_completed=false +permissions/receive_mms=false +permissions/receive_sms=false +permissions/receive_wap_push=false +permissions/record_audio=false +permissions/reorder_tasks=false +permissions/restart_packages=false +permissions/send_respond_via_message=false +permissions/send_sms=false +permissions/set_activity_watcher=false +permissions/set_alarm=false +permissions/set_always_finish=false +permissions/set_animation_scale=false +permissions/set_debug_app=false +permissions/set_orientation=false +permissions/set_pointer_speed=false +permissions/set_preferred_applications=false +permissions/set_process_limit=false +permissions/set_time=false +permissions/set_time_zone=false +permissions/set_wallpaper=false +permissions/set_wallpaper_hints=false +permissions/signal_persistent_processes=false +permissions/status_bar=false +permissions/subscribed_feeds_read=false +permissions/subscribed_feeds_write=false +permissions/system_alert_window=false +permissions/transmit_ir=false +permissions/uninstall_shortcut=false +permissions/update_device_stats=false +permissions/use_credentials=false +permissions/use_sip=false +permissions/vibrate=false +permissions/wake_lock=false +permissions/write_apn_settings=false +permissions/write_calendar=false +permissions/write_call_log=false +permissions/write_contacts=false +permissions/write_external_storage=false +permissions/write_gservices=false +permissions/write_history_bookmarks=false +permissions/write_profile=false +permissions/write_secure_settings=false +permissions/write_settings=false +permissions/write_sms=false +permissions/write_social_stream=false +permissions/write_sync_settings=false +permissions/write_user_dictionary=false diff --git a/DungeonShooting_Godot/src/common/NodeExtend.cs b/DungeonShooting_Godot/src/common/NodeExtend.cs index a341103..72c8570 100644 --- a/DungeonShooting_Godot/src/common/NodeExtend.cs +++ b/DungeonShooting_Godot/src/common/NodeExtend.cs @@ -29,7 +29,12 @@ return inst; } - public static bool StopThrow(this Node2D node) + public static ThrowNode PutDown(this Node2D node, Sprite shadowTarget) + { + return StartThrow(node, Vector2.Zero, node.Position, 0, 0, 0, 0, 0, shadowTarget); + } + + public static bool Pickup(this Node2D node) { ThrowNode parent = node.GetParentOrNull(); if (parent != null) { diff --git a/DungeonShooting_Godot/src/effect/ThrowNode.cs b/DungeonShooting_Godot/src/effect/ThrowNode.cs index 65aa23b..e49d8ea 100644 --- a/DungeonShooting_Godot/src/effect/ThrowNode.cs +++ b/DungeonShooting_Godot/src/effect/ThrowNode.cs @@ -69,12 +69,15 @@ CollisionMask = 1; CollisionLayer = 0; //创建碰撞器 - CollisionShape = new CollisionShape2D(); - CollisionShape.Name = "Collision"; - var shape = new RectangleShape2D(); - shape.Extents = Size * 0.5f; - CollisionShape.Shape = shape; - AddChild(CollisionShape); + if (Size != Vector2.Zero) + { + CollisionShape = new CollisionShape2D(); + CollisionShape.Name = "Collision"; + var shape = new RectangleShape2D(); + shape.Extents = Size * 0.5f; + CollisionShape.Shape = shape; + AddChild(CollisionShape); + } } /// @@ -226,7 +229,10 @@ { Mount.Position = new Vector2(0, 0); IsOver = true; - CollisionShape.Disabled = true; + if (CollisionShape != null) + { + CollisionShape.Disabled = true; + } OnOver(); } } diff --git a/DungeonShooting_Godot/src/package/Holster.cs b/DungeonShooting_Godot/src/package/Holster.cs index 1c77cbf..7428da0 100644 --- a/DungeonShooting_Godot/src/package/Holster.cs +++ b/DungeonShooting_Godot/src/package/Holster.cs @@ -64,6 +64,34 @@ } /// + /// 根据索引获取武器 + /// + public Gun GetGun(int index) { + if (index >= SlotList.Length) + { + return null; + } + return SlotList[index].Gun; + } + + /// + /// 根据武器id查找枪套中该武器所在的位置, 如果没有, 则返回 -1 + /// + /// 武器id + public int FindGun(string id) + { + for (int i = 0; i < SlotList.Length; i++) + { + var item = SlotList[i]; + if (item.Gun != null && item.Gun.Attribute.Id == id) + { + return i; + } + } + return -1; + } + + /// /// 拾起武器, 存入枪套中, 返回存放在枪套的位置, 如果容不下这把武器, 则会返回 -1 /// /// 武器对象 diff --git a/DungeonShooting_Godot/src/room/RoomManager.cs b/DungeonShooting_Godot/src/room/RoomManager.cs index ff65623..57bcf55 100644 --- a/DungeonShooting_Godot/src/room/RoomManager.cs +++ b/DungeonShooting_Godot/src/room/RoomManager.cs @@ -40,7 +40,20 @@ public override void _Ready() { + //播放bgm SoundManager.PlayeMusic("intro.ogg", this, -17f); + var gun1 = GunManager.GetGun1(); + gun1.Position = new Vector2(80, 80); + gun1.PutDown(gun1.GunSprite); + var gun2 = GunManager.GetGun2(); + gun2.Position = new Vector2(80, 120); + gun2.PutDown(gun2.GunSprite); + var gun3 = GunManager.GetGun3(); + gun3.Position = new Vector2(120, 80); + gun3.PutDown(gun3.GunSprite); + var gun4 = GunManager.GetGun4(); + gun4.Position = new Vector2(120, 120); + gun4.PutDown(gun4.GunSprite); } public override void _Process(float delta) diff --git a/DungeonShooting_Godot/src/weapon/gun/Gun.cs b/DungeonShooting_Godot/src/weapon/gun/Gun.cs index b8583a2..8f65d74 100644 --- a/DungeonShooting_Godot/src/weapon/gun/Gun.cs +++ b/DungeonShooting_Godot/src/weapon/gun/Gun.cs @@ -429,6 +429,17 @@ } /// + /// 拾起的弹药数量, 如果到达容量上限, 则返回拾取完毕后剩余的弹药数量 + /// + /// 弹药数量 + public int PickUpAmmo(int count) + { + var num = ResidueAmmo; + ResidueAmmo = Mathf.Min(ResidueAmmo + count, Attribute.MaxCartridgeCapacity - CurrAmmo); + return count - ResidueAmmo + num; + } + + /// /// 触发换弹 /// public void _Reload() @@ -468,9 +479,33 @@ public void Tnteractive(Role master) { - if (this.StopThrow()) + var index = master.Holster.FindGun(Attribute.Id); + if (index != -1) //如果有这个武器 { - master.Holster.PickupGun(this); + if (CurrAmmo + ResidueAmmo == 0) //没有子弹了 + { + return; + } + var gun = master.Holster.GetGun(index); + var maxCount = Attribute.MaxCartridgeCapacity; + + if (ResidueAmmo > 0 && gun.CurrAmmo + gun.ResidueAmmo < maxCount) + { + ResidueAmmo = gun.PickUpAmmo(ResidueAmmo); + } + if (CurrAmmo > 0 && gun.CurrAmmo + gun.ResidueAmmo < maxCount) + { + CurrAmmo = gun.PickUpAmmo(CurrAmmo); + } + //CurrAmmo + //ResidueAmmo + } + else//没有武器 + { + if (this.Pickup()) + { + master.Holster.PickupGun(this); + } } }