X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 244 (tree) |
|---|---|
| Time | 2020-05-05 14:40:55 |
| Author | |
連射モード切替カウントが有効な場合に、切り替え時にスコープを解除しつつ、切替モーションを再生するように。
| @@ -756,20 +756,26 @@ | ||
| 756 | 756 | |
| 757 | 757 | //もしスコープ使用中ならば |
| 758 | 758 | if( scopemode != 0 ){ |
| 759 | - //新しい武器の情報を取得 | |
| 760 | - if( Param->GetWeapon(ChangeWeaponID, &ParamData) != 0 ){ return 1; } | |
| 759 | + if( ChangeCnt == 0 ){ | |
| 760 | + //新しい武器の情報を取得 | |
| 761 | + if( Param->GetWeapon(ChangeWeaponID, &ParamData) != 0 ){ return 1; } | |
| 761 | 762 | |
| 762 | - if( scopemode == ParamData.scopemode ){ | |
| 763 | - //同じスコープが使えるならば、何もせずスコープ維持 | |
| 763 | + if( scopemode == ParamData.scopemode ){ | |
| 764 | + //同じスコープが使えるならば、何もせずスコープ維持 | |
| 765 | + } | |
| 766 | + else if( ParamData.scopemode == 0 ){ | |
| 767 | + //スコープが使えないならば、スコープ解除 | |
| 768 | + SetDisableScope(); | |
| 769 | + } | |
| 770 | + else{ | |
| 771 | + //異なるスコープが使えるならば、スコープ再設定 | |
| 772 | + SetEnableScope(); | |
| 773 | + } | |
| 764 | 774 | } |
| 765 | - else if( ParamData.scopemode == 0 ){ | |
| 766 | - //スコープが使えないならば、スコープ解除 | |
| 775 | + else{ | |
| 776 | + //スコープ解除 | |
| 767 | 777 | SetDisableScope(); |
| 768 | 778 | } |
| 769 | - else{ | |
| 770 | - //異なるスコープが使えるならば、スコープ再設定 | |
| 771 | - SetEnableScope(); | |
| 772 | - } | |
| 773 | 779 | } |
| 774 | 780 | |
| 775 | 781 | //モーション実行 |
| @@ -1696,6 +1702,7 @@ | ||
| 1696 | 1702 | if( deadstate == 5 ){ return 3; } |
| 1697 | 1703 | |
| 1698 | 1704 | int WeaponReloadMotionCnt; |
| 1705 | + int WeaponChangeWeaponidCnt; | |
| 1699 | 1706 | float FallDistance; |
| 1700 | 1707 | float nowmove_x, nowmove_z; |
| 1701 | 1708 | int CheckDead; |
| @@ -1722,12 +1729,14 @@ | ||
| 1722 | 1729 | } |
| 1723 | 1730 | } |
| 1724 | 1731 | |
| 1725 | - //リロードカウント取得(モーション用) | |
| 1732 | + //リロード・ショットモード切替カウント取得(モーション用) | |
| 1726 | 1733 | if( weapon[selectweapon] != NULL ){ |
| 1727 | 1734 | WeaponReloadMotionCnt = weaponreloadcnt; |
| 1735 | + WeaponChangeWeaponidCnt = changeweaponidcnt; | |
| 1728 | 1736 | } |
| 1729 | 1737 | else{ |
| 1730 | 1738 | WeaponReloadMotionCnt = 0; |
| 1739 | + WeaponChangeWeaponidCnt = 0; | |
| 1731 | 1740 | } |
| 1732 | 1741 | |
| 1733 | 1742 | //照準の状態誤差の処理 |
| @@ -1797,7 +1806,7 @@ | ||
| 1797 | 1806 | } |
| 1798 | 1807 | |
| 1799 | 1808 | //モーション計算 |
| 1800 | - MotionCtrl->RunFrame(rotation_x, armrotation_y, weapon_paramid, WeaponReloadMotionCnt, MoveFlag_lt, hp, player); | |
| 1809 | + MotionCtrl->RunFrame(rotation_x, armrotation_y, weapon_paramid, WeaponReloadMotionCnt, WeaponChangeWeaponidCnt, MoveFlag_lt, hp, player); | |
| 1801 | 1810 | |
| 1802 | 1811 | if( CheckDead != 0 ){ return 3; } |
| 1803 | 1812 | return 1; |
| @@ -3017,10 +3026,11 @@ | ||
| 3017 | 3026 | //! @attention armrotation_y 腕の回転角度 |
| 3018 | 3027 | //! @attention weapon_paramid 武器の種類番号 |
| 3019 | 3028 | //! @attention ReloadCnt 武器のリロードカウント |
| 3029 | +//! @attention ChangeShotModeCnt 武器のショットモード切替カウント | |
| 3020 | 3030 | //! @attention MoveFlag 移動方向を表すフラグ |
| 3021 | 3031 | //! @attention hp 体力 |
| 3022 | 3032 | //! @attention PlayerFlag プレイヤーかどうか |
| 3023 | -void HumanMotionControl::RunFrame(float rotation_x, float armrotation_y, int weapon_paramid, int ReloadCnt, int MoveFlag, int hp, bool PlayerFlag) | |
| 3033 | +void HumanMotionControl::RunFrame(float rotation_x, float armrotation_y, int weapon_paramid, int ReloadCnt, int ChangeShotModeCnt, int MoveFlag, int hp, bool PlayerFlag) | |
| 3024 | 3034 | { |
| 3025 | 3035 | int ArmModelID; |
| 3026 | 3036 | float move_rx; |
| @@ -3040,6 +3050,11 @@ | ||
| 3040 | 3050 | reaction_y = ARMRAD_RELOADWEAPON; |
| 3041 | 3051 | } |
| 3042 | 3052 | |
| 3053 | + //武器のショットモード切替中なら腕の角度を再設定 | |
| 3054 | + if( ChangeShotModeCnt > 0 ){ | |
| 3055 | + reaction_y = ARMRAD_RELOADWEAPON; | |
| 3056 | + } | |
| 3057 | + | |
| 3043 | 3058 | if( weapon_paramid == ID_WEAPON_NONE ){ //手ぶら |
| 3044 | 3059 | if( PlayerFlag == true ){ |
| 3045 | 3060 | armmodel_rotation_y = ARMRAD_NOWEAPON; |
| @@ -386,7 +386,7 @@ | ||
| 386 | 386 | void DumpWeapon(); |
| 387 | 387 | void ChangeShotMode(int weapon_paramid); |
| 388 | 388 | void Jump(); |
| 389 | - void RunFrame(float rotation_x, float armrotation_y, int weapon_paramid, int ReloadCnt, int MoveFlag, int hp, bool PlayerFlag); | |
| 389 | + void RunFrame(float rotation_x, float armrotation_y, int weapon_paramid, int ReloadCnt, int ChangeShotModeCnt, int MoveFlag, int hp, bool PlayerFlag); | |
| 390 | 390 | void GetRenderMotion(float *arm_rotation_y, float *leg_rotation_x, int *upmodel, int *armmodel, int *legmodel); |
| 391 | 391 | }; |
| 392 | 392 |