From 28a8939ab7014f10cbb339d06de9aa421963778a Mon Sep 17 00:00:00 2001 From: KOSMOGOR Date: Fri, 18 Apr 2025 14:05:45 +0300 Subject: [PATCH] add: weapon switching system --- .../No-Time-To-Rest/Design document.md.meta | 7 +++++++ Assets/Scripts/Player/WeaponController.cs | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 Assets/Obsidian/No-Time-To-Rest/Design document.md.meta diff --git a/Assets/Obsidian/No-Time-To-Rest/Design document.md.meta b/Assets/Obsidian/No-Time-To-Rest/Design document.md.meta new file mode 100644 index 0000000..52af72f --- /dev/null +++ b/Assets/Obsidian/No-Time-To-Rest/Design document.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7a6da81b74a2fb344a8f0893d21193cf +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Player/WeaponController.cs b/Assets/Scripts/Player/WeaponController.cs index d92ab34..874f070 100644 --- a/Assets/Scripts/Player/WeaponController.cs +++ b/Assets/Scripts/Player/WeaponController.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using UnityEngine; public class WeaponController : MonoBehaviour @@ -12,6 +13,22 @@ public class WeaponController : MonoBehaviour } void Update() { + ChangeActiveWeapon((currentWeapon + (int)Input.mouseScrollDelta.y) % weapons.Length); + CheckButtonsForChangeWeapon(); if (Input.GetMouseButton(0) && weapons[currentWeapon].isActive) weapons[currentWeapon].Shoot(Input.GetMouseButtonDown(0), Input.GetMouseButton(0)); } + + void CheckButtonsForChangeWeapon() { + KeyCode[] keys = {KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4, KeyCode.Alpha5}; + foreach (var (key, i) in keys.Select((val, ind) => (val, ind))) { + if (Input.GetKeyDown(key)) ChangeActiveWeapon(i); + } + } + + void ChangeActiveWeapon(int ind) { + if (ind < 0 || ind >= weapons.Length || ind == currentWeapon) return; + weapons[currentWeapon].SetWeaponState(false); + weapons[ind].SetWeaponState(false); + currentWeapon = ind; + } }