// Switches to the given weapon index in weapon slots if the new index is a valid weapon that is different from our current one public void SwitchToWeaponIndex(int newWeaponIndex, bool force = false) { if (force || (newWeaponIndex != activeWeaponIndex && newWeaponIndex >= 0)) { // Store data related to weapon switching animation m_WeaponSwitchNewWeaponIndex = newWeaponIndex; m_TimeStartedWeaponSwitch = Time.time; // Handle case of switching to a valid weapon for the first time (simply put it up without putting anything down first) if (GetActiveWeapon() == null) { m_WeaponMainLocalPosition = downWeaponPosition.localPosition; m_WeaponSwitchState = WeaponSwitchState.PutUpNew; activeWeaponIndex = m_WeaponSwitchNewWeaponIndex; WeaponController newWeapon = GetWeaponAtSlotIndex(m_WeaponSwitchNewWeaponIndex); if (onSwitchedToWeapon != null) { onSwitchedToWeapon.Invoke(newWeapon); } } // otherwise, remember we are putting down our current weapon for switching to the next one else { m_WeaponSwitchState = WeaponSwitchState.PutDownPrevious; } } }
private void Start() { activeWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; m_InputHandler = GetComponent <PlayerInputHandler>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerInputHandler, PlayerWeaponsManager>(m_InputHandler, this, gameObject); m_PlayerCharacterController = GetComponent <PlayerCharacterController>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerCharacterController, PlayerWeaponsManager>(m_PlayerCharacterController, this, gameObject); SetFOV(defaultFOV); onSwitchedToWeapon += OnWeaponSwitched; // Add starting weapons foreach (var weapon in startingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); // Turn off left hand by default if (Hand == Handedness.Left) { enabled = false; } }
void Start() { ActiveWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; m_InputHandler = GetComponent <PlayerInputHandler>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerInputHandler, PlayerWeaponsManager>(m_InputHandler, this, gameObject); m_PlayerCharacterController = GetComponent <PlayerCharacterController>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerCharacterController, PlayerWeaponsManager>( m_PlayerCharacterController, this, gameObject); SetFov(DefaultFov); OnSwitchedToWeapon += OnWeaponSwitched; // Add starting weapons foreach (var weapon in StartingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); }
// Switches to the given weapon index in weapon slots if the new index is a valid weapon that is different from our current one //新しいインデックスが現在のものとは異なる有効な武器である場合、武器スロット内の指定された武器インデックスに切り替えます public void SwitchToWeaponIndex(int newWeaponIndex, bool force = false) { if (force || (newWeaponIndex != activeWeaponIndex && newWeaponIndex >= 0)) { // Store data related to weapon switching animation //武器切り替えアニメーションに関連するデータを保存します m_WeaponSwitchNewWeaponIndex = newWeaponIndex; m_TimeStartedWeaponSwitch = Time.time; // Handle case of switching to a valid weapon for the first time (simply put it up without putting anything down first) //初めて有効な武器に切り替えるケースを処理します(最初に何も置かずに単に置くだけです) if (GetActiveWeapon() == null) { m_WeaponMainLocalPosition = downWeaponPosition.localPosition; m_WeaponSwitchState = WeaponSwitchState.PutUpNew; activeWeaponIndex = m_WeaponSwitchNewWeaponIndex; WeaponController newWeapon = GetWeaponAtSlotIndex(m_WeaponSwitchNewWeaponIndex); if (onSwitchedToWeapon != null) { onSwitchedToWeapon.Invoke(newWeapon); } } // otherwise, remember we are putting down our current weapon for switching to the next one //そうでなければ、次の武器に切り替えるために現在の武器を置いていることを思い出してください else { m_WeaponSwitchState = WeaponSwitchState.PutDownPrevious; } } }
private void Start() { activeWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; m_InputHandler = GetComponent <PlayerInputHandler_Photon>(); playerWapMan = GetComponent <PlayerWeaponsManager_Photon>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerInputHandler_Photon, PlayerWeaponsManager_Photon>(m_InputHandler, this, gameObject); m_PlayerCharacterController = GetComponent <PlayerCharacterController_Photon>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerCharacterController_Photon, PlayerWeaponsManager_Photon>(m_PlayerCharacterController, this, gameObject); SetFOV(defaultFOV); onSwitchedToWeapon += OnWeaponSwitched; // Add starting weapons foreach (var weapon in startingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); weaponParentSocket.transform.parent = weaponCamera.transform; }
private void Start() { inter = GetComponent <Interact>(); activeWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; m_InputHandler = GetComponent <PlayerInputHandler>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerInputHandler, PlayerWeaponsManager>(m_InputHandler, this, gameObject); m_PlayerCharacterController = GetComponent <PlayerCharacterController>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerCharacterController, PlayerWeaponsManager>(m_PlayerCharacterController, this, gameObject); SetFOV(defaultFOV); onSwitchedToWeapon += OnWeaponSwitched; startingWeapons = startingWeapons.Where(x => x != null).ToList(); // Add starting weapons foreach (var weapon in startingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); }
void UpdateWeaponSwitching() { // Calculate the time ratio (0 to 1) since weapon switch was triggered float switchingTimeFactor = 0f; if (weaponSwitchDelay == 0f) { switchingTimeFactor = 1f; } else { switchingTimeFactor = Mathf.Clamp01((Time.time - m_TimeStartedWeaponSwitch) / weaponSwitchDelay); } // Handle transiting to new switch state if (switchingTimeFactor >= 1f) { if (m_WeaponSwitchState == WeaponSwitchState.PutDownPrevious) { // Deactivate old weapon WeaponController oldWeapon = GetWeaponAtSlotIndex(ActiveWeaponIndex); if (oldWeapon != null) { oldWeapon.ShowWeapon(false); } ActiveWeaponIndex = m_WeaponSwitchNewWeaponIndex; switchingTimeFactor = 0f; // Activate new weapon WeaponController newWeapon = GetWeaponAtSlotIndex(ActiveWeaponIndex); if (onSwitchedToWeapon != null) { onSwitchedToWeapon.Invoke(newWeapon); } if (newWeapon) { m_TimeStartedWeaponSwitch = Time.time; m_WeaponSwitchState = WeaponSwitchState.PutUpNew; } else { // if new weapon is null, don't follow through with putting weapon back up m_WeaponSwitchState = WeaponSwitchState.Down; } } else if (m_WeaponSwitchState == WeaponSwitchState.PutUpNew) { m_WeaponSwitchState = WeaponSwitchState.Up; } } }
// Start is called before the first frame update void Start() { Character = GetComponent <Character>(); ActiveWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; onSwitchedToWeapon += OnWeaponSwitched; foreach (var weapon in StartingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); }
private void Start() { activeWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; m_InputHandler = GetComponent <PlayerInputHandler>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerInputHandler, PlayerWeaponsManager>(m_InputHandler, this, gameObject); m_PlayerCharacterController = GetComponent <PlayerCharacterController>(); DebugUtility.HandleErrorIfNullGetComponent <PlayerCharacterController, PlayerWeaponsManager>(m_PlayerCharacterController, this, gameObject); SetFOV(defaultFOV); onSwitchedToWeapon += OnWeaponSwitched; }
private void Start() { activeWeaponIndex = -1; weaponSwitchState = WeaponSwitchState.Down; inputHandler = GetComponent <PlayerInputHandler>(); player = GetComponent <PlayerCharacterController>(); SetFOV(defaultFOV); onSwitchedToWeapon += OnWeaponSwitched; // Add starting weapons foreach (var weapon in startingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); }
private void Start() { activeWeaponIndex = -1; m_WeaponSwitchState = WeaponSwitchState.Down; m_InputHandler = GetComponent <IS_PlayerInputHandler>(); DebugUtility.HandleErrorIfNullGetComponent <IS_PlayerInputHandler, IS_PlayerWeaponsManager>(m_InputHandler, this, gameObject); m_IS_PlayerCharacterController = GetComponent <IS_PlayerCharacterController>(); DebugUtility.HandleErrorIfNullGetComponent <IS_PlayerCharacterController, IS_PlayerWeaponsManager>(m_IS_PlayerCharacterController, this, gameObject); SetFOV(defaultFOV); onSwitchedToWeapon += OnWeaponSwitched; // Add starting weapons foreach (var weapon in startingWeapons) { AddWeapon(weapon); } SwitchWeapon(true); weaponCamera.rect = m_IS_PlayerCharacterController.playerCamera.rect; }
// Updates the animated transition of switching weapons void UpdateWeaponSwitching() { // Calculate the time ratio (0 to 1) since weapon switch was triggered float switchingTimeFactor = 0f; if (weaponSwitchDelay == 0f) { switchingTimeFactor = 1f; } else { switchingTimeFactor = Mathf.Clamp01((Time.time - timeStartedWeaponSwitch) / weaponSwitchDelay); } // Handle transiting to new switch state if (switchingTimeFactor >= 1f) { if (weaponSwitchState == WeaponSwitchState.PutDownPrevious) { // Deactivate old weapon WeaponController oldWeapon = GetWeaponAtSlotIndex(activeWeaponIndex); if (oldWeapon != null) { oldWeapon.ShowWeapon(false); } activeWeaponIndex = weaponSwitchNewWeaponIndex; switchingTimeFactor = 0f; // Activate new weapon WeaponController newWeapon = GetWeaponAtSlotIndex(activeWeaponIndex); if (onSwitchedToWeapon != null) { onSwitchedToWeapon.Invoke(newWeapon); } if (newWeapon) { timeStartedWeaponSwitch = Time.time; weaponSwitchState = WeaponSwitchState.PutUpNew; } else { // if new weapon is null, don't follow through with putting weapon back up weaponSwitchState = WeaponSwitchState.Down; } } else if (weaponSwitchState == WeaponSwitchState.PutUpNew) { weaponSwitchState = WeaponSwitchState.Up; } } // Handle moving the weapon socket position for the animated weapon switching if (weaponSwitchState == WeaponSwitchState.PutDownPrevious) { weaponMainLocalPosition = Vector3.Lerp(defaultWeaponPosition.localPosition, downWeaponPosition.localPosition, switchingTimeFactor); } else if (weaponSwitchState == WeaponSwitchState.PutUpNew) { weaponMainLocalPosition = Vector3.Lerp(downWeaponPosition.localPosition, defaultWeaponPosition.localPosition, switchingTimeFactor); } }
// Updates the animated transition of switching weapons //武器の切り替えのアニメーション化された遷移を更新します void UpdateWeaponSwitching() { // Calculate the time ratio (0 to 1) since weapon switch was triggered //武器の切り替えがトリガーされてからの時間の比率(0から1)を計算します float switchingTimeFactor = 0f; if (weaponSwitchDelay == 0f) { switchingTimeFactor = 1f; } else { switchingTimeFactor = Mathf.Clamp01((Time.time - m_TimeStartedWeaponSwitch) / weaponSwitchDelay); } // Handle transiting to new switch state //新しいスイッチ状態への移行を処理します if (switchingTimeFactor >= 1f) { if (m_WeaponSwitchState == WeaponSwitchState.PutDownPrevious) { // Deactivate old weapon //古い武器を無効にします WeaponController oldWeapon = GetWeaponAtSlotIndex(activeWeaponIndex); if (oldWeapon != null) { oldWeapon.ShowWeapon(false); } activeWeaponIndex = m_WeaponSwitchNewWeaponIndex; switchingTimeFactor = 0f; // Activate new weapon //新しい武器をアクティブにします WeaponController newWeapon = GetWeaponAtSlotIndex(activeWeaponIndex); if (onSwitchedToWeapon != null) { onSwitchedToWeapon.Invoke(newWeapon); } if (newWeapon) { m_TimeStartedWeaponSwitch = Time.time; m_WeaponSwitchState = WeaponSwitchState.PutUpNew; } else { // if new weapon is null, don't follow through with putting weapon back up //新しい武器がnullの場合、武器を元に戻しません。 m_WeaponSwitchState = WeaponSwitchState.Down; } } else if (m_WeaponSwitchState == WeaponSwitchState.PutUpNew) { m_WeaponSwitchState = WeaponSwitchState.Up; } } // Handle moving the weapon socket position for the animated weapon switching //アニメーション化された武器切り替えのための武器ソケット位置の移動を処理します if (m_WeaponSwitchState == WeaponSwitchState.PutDownPrevious) { m_WeaponMainLocalPosition = Vector3.Lerp(defaultWeaponPosition.localPosition, downWeaponPosition.localPosition, switchingTimeFactor); } else if (m_WeaponSwitchState == WeaponSwitchState.PutUpNew) { m_WeaponMainLocalPosition = Vector3.Lerp(downWeaponPosition.localPosition, defaultWeaponPosition.localPosition, switchingTimeFactor); } }
private void Update() { // shoot handling BasicWeapon activeWeapon = GetActiveWeapon(); if (activeWeapon && m_WeaponSwitchState == WeaponSwitchState.Up) { // handle aiming down sights // if not grabbing isAiming = inter.canShoot && m_InputHandler.GetAimInputHeld(); // handle shooting // if not grabbing if (inter.canShoot) { bool hasFired = activeWeapon.HandleShootInputs( m_InputHandler.GetFireInputDown(), m_InputHandler.GetFireInputHeld(), m_InputHandler.GetFireInputReleased()); // Handle accumulating recoil if (hasFired) { m_AccumulatedRecoil += Vector3.back * activeWeapon.recoilForce; m_AccumulatedRecoil = Vector3.ClampMagnitude(m_AccumulatedRecoil, maxRecoilDistance); } } else { m_WeaponSwitchState = WeaponSwitchState.Down; } } if (m_InputHandler.GetCrouchInputHeld()) { m_WeaponSwitchState = WeaponSwitchState.Down; } else if (m_WeaponSwitchState == WeaponSwitchState.Down) { m_WeaponSwitchState = WeaponSwitchState.Up; } // weapon switch handling if (!isAiming && (activeWeapon == null || !activeWeapon.isCharging) && (m_WeaponSwitchState == WeaponSwitchState.Up || m_WeaponSwitchState == WeaponSwitchState.Down)) { int switchWeaponInput = m_InputHandler.GetSwitchWeaponInput(); if (switchWeaponInput != 0) { bool switchUp = switchWeaponInput > 0; SwitchWeapon(switchUp); } else { switchWeaponInput = m_InputHandler.GetSelectWeaponInput(); if (switchWeaponInput != 0) { if (GetWeaponAtSlotIndex(switchWeaponInput - 1) != null) { SwitchToWeaponIndex(switchWeaponInput - 1); } } } } // Pointing at enemy handling isPointingAtEnemy = false; if (activeWeapon) { if (Physics.Raycast(weaponCamera.transform.position, weaponCamera.transform.forward, out RaycastHit hit, 1000, -1, QueryTriggerInteraction.Ignore)) { if (hit.collider.GetComponentInParent <EnemyController>()) { isPointingAtEnemy = true; } } } }