äžäººç§°ã·ã¥ãŒãã£ã³ã°ã²ãŒã ïŒFPSïŒã¯ããã¬ã€ã€ãŒãæŠåšã䜿çšããŠããã£ã©ã¯ã¿ãŒã®ç®ãéããŠäžçãèŠããžã£ã³ã«ã§ãã
Call of Dutyã
Battlefieldãªã©ã®ãã©ã³ãã£ã€ãºã®æåã«èŠãããããã«ãFPSã²ãŒã ã¯éåžžã«äººæ°ããããŸãã
Unreal Engineã¯å
ã
FPSã®éçºçšã«äœæãããããããã®ãããªã²ãŒã ãäœæããããã«ããã䜿çšããããšã¯è«ççã§ãã ãã®ãã¥ãŒããªã¢ã«ã§ã¯ã次ã®ããšãåŠã³ãŸãã
- 移åããŠèŠåãããšãã§ããäžäººç§°èŠç¹ããããŒã³ãäœæãã
- æŠåšãäœæãããã¬ã€ã€ãŒã®ããŒã³ã«çµã³ä»ããŸã
- è¡è¿œè·¡ïŒå
ç·è¿œè·¡ãšãåŒã°ããŸãïŒã䜿çšããŠåŒŸäžžãæã¡ãŸã
- 俳åªã«ãã¡ãŒãžãäžãã
泚ïŒãã®èšäºã¯ãUnreal Engineã«é¢ããäžé£ã®ãã¥ãŒããªã¢ã«ã®ç¬¬10éšã§ãã
ä»äºãå§ãã
空çœã®
ãããžã§ã¯ããããŠã³ããŒãããŠè§£åããŸãã ãããžã§ã¯ããã©ã«ããŒã«ç§»åãã
BlockBreaker.uprojectãéã
ãŸã ã 次ã®ã·ãŒã³ã衚瀺ãããŸãã
ç·ã®å£ã«ã¯å€ãã®ç®æšããããŸãã ç Žæãããšãèµ€ã«å€ãããŸãã 圌ãã®å¥åº·ããŒãã«éãããšã圌ãã¯æ¶ããŸãã èµ€ããã¿ã³ã¯ãã¹ãŠã®ç®æšããªã»ããããŸãã
ãŸããPawnãã¬ãŒã€ãŒãäœæããå¿
èŠããããŸãã
ããŒã³ãã¬ãŒã€ãŒã®äœæ
Blueprintsãã©ã«ããŒã«ç§»åããŠãæ°ãã
Blueprint ClassãäœæããŸãã 芪ã¯ã©ã¹ãšããŠ
Characterãéžæãã
BP_Playerãšããååã
ä»ããŸãã
Characterã¯Pawnã®ããªãšãŒã·ã§ã³ã§ããã
CharacterMovementã³ã³ããŒãã³ããªã©ã®è¿œå æ©èœãåããŠããŸãã
ãã®ã³ã³ããŒãã³ãã¯ããŠã©ãŒãã³ã°ããžã£ã³ããªã©ã®åããèªåçã«åŠçããŸãã Pawnã移åããããã«ã察å¿ããé¢æ°ãåŒã³åºãã ãã§ãã ãã®ã³ã³ããŒãã³ãã§ã¯ãæ©è¡é床ããžã£ã³ãé床ãªã©ã®å€æ°ãèšå®ã§ããŸãã
Pawnã移åããã«ã¯ããã¬ã€ã€ãŒããã€ç§»åããŒãæŒããããç¥ãå¿
èŠããããŸãã ãããè¡ãããã«ãããŒ
W ã
A ã
S ãããã³
Dã«åããå²ãåœãŠãŸã
ã泚ïŒãã€ã³ãã£ã³ã°ã«æ
£ããŠããªãå Žåã¯ã ãã«ãŒããªã³ãã«é¢ãããã¥ãŒããªã¢ã«ã®äžéšã§ãã€ã³ãã£ã³ã°ã«ã€ããŠèªãããšãã§ããŸãã ããŒãã€ã³ãã£ã³ã°ã«ãããã©ã®ããŒãã¢ã¯ã·ã§ã³ãå®è¡ãããã決å®ããŸãã
ã¢ãŒã·ã§ã³ã¹ãããã®äœæ
[
ç·šé] -
[ãããžã§ã¯ãèšå®]ãéžæãã
å
¥åèšå®ãéããŸãã
MoveForwardããã³
MoveRightãšãã2ã€ã®
軞ãããã³ã°ãäœæããŸãã MoveForwardã¯ååŸã«é§åããŸãã MoveRight-å·Šå³ã«ç§»åããŸãã
MoveForwardã®å Žå ãããŒã
Wã«çœ®ãæããŸã
ã ãã®åŸãå¥ã®ããŒãäœæããŠ
SãéžæããŸã
ã Sã® ã¹ã±ãŒã«ã
-1.0ã«å€æŽããŸãã
æ³šïŒ [ ã¹ã±ãŒã«]ãã£ãŒã«ãã®è©³çŽ°ã«ã€ããŠã¯ã ãã«ãŒããªã³ãã«é¢ãããã¥ãŒããªã¢ã«ã®äžéšããèªã¿ãã ããã ã 軞ã®å€ãšå
¥åã¹ã±ãŒã« ãã»ã¯ã·ã§ã³ã§ã¯ããããäœã§ãããã©ã®ããã«äœ¿çšãããã説æããŠããŸãã
åŸã§ãã¹ã±ãŒã«å€ã«åæ¹ããŒã³ãã¯ãã«ãä¹ç®ããŸãã ããã«ããã
æ£ã®ã¹ã±ãŒã«ã§
åæ¹ãã¯ãã«ãåŸãããŸãã ã¹ã±ãŒã«ã
è² ã®å Žåããã¯ãã«ã¯
åŸæ¹ã«åããã
ãŸã ã çµæã®ãã¯ãã«ã䜿çšããŠãPawnãååŸã«ç§»åã§ããŸãã
ããã§ãå·Šå³ã«ç§»åããå Žåãåãããã«ããå¿
èŠããããŸãã
MoveRightã®ããŒã
Dã«å€æŽããŸã
ã 次ã«ãæ°ããããŒãäœæããŠãAãéžæããŸãã
Aã® ã¹ã±ãŒã«ã
-1.0ã«å€æŽããŸãã
ãã€ã³ãã£ã³ã°ãèšå®ãããã移åã«äœ¿çšããå¿
èŠããããŸãã
ã¢ãŒã·ã§ã³å®è£
BP_Playerãéããã€ãã³ãã°ã©ããéããŸãã
MoveForwardã€ãã³ãïŒ
Axis Eventsãªã¹ãã«ãªã¹ããããŠãããã®ïŒãè¿œå ããŸãã ãã®ã€ãã³ãã¯ãäœãã¯ãªãã¯ããªããŠãããã¹ãŠã®ãã¬ãŒã ã§å®è¡ãããŸãã
ãŸãã以åã«èšå®ããã
ã¹ã±ãŒã«å€ã«çãã
軞å€ãåºåããŸãã
WãæŒããšåºå
1ã« ã
SãæŒããš
-1ã«é©çšãããŸã
ã ããŒãæŒããªããšãåºåã¯
0ã«ãªã
ãŸã ã
次ã«ãPawnã移åããããã«æ³šæããå¿
èŠããããŸãã è¿œå
移åå
¥åã
è¿œå ãã次ã®ããã«æ¥ç¶ããŸãã
éåå
¥åã®è¿œå ã¯ãã¯ãã«ãåãåããããã«
ã¹ã±ãŒã«å€ãæããŸãã ããã«ãããé©åãªæ¹åã«å€æãããŸãã
Characterã䜿çšããŠããããã
CharacterMovementã³ã³ããŒãã³ãã¯Pawnããã®æ¹åã«ç§»åããŸãã
次ã«ã移åã®æ¹åã瀺ãå¿
èŠããããŸãã åã«é²ã¿ããã®ã§ã
Get Actor Forward Vectorã䜿çšã§ããŸãã ããã«ãããåæ¹ãã¯ãã«ãè¿ãããŸãã 次ã®ããã«äœæããŠæ¥ç¶ããŸãã
èŠçŽãããšïŒ
- MoveForwardã¯åãã¬ãŒã ãå®è¡ãã 軞ã®å€ãåºåã«æž¡ããŸãã WãæŒããšãã®å€ã¯1ã«ãªãã SãæŒããš-1ã«ãªããŸãã ãããã®ããŒã®ããããæŒããªãå Žåãåºåã¯0ã«ãªããŸã ã
- 移åå
¥åã®è¿œå ã¯ãåæ¹ã®ããŒã³ãã¯ãã«ã«ã¹ã±ãŒã«å€ãä¹ç®ããŸãã ãã®ãããæŒãããããŒã«å¿ããŠããã¯ãã«ã¯åæ¹ãŸãã¯åŸæ¹ã«åããããŸãã ããŒãæŒããªãå Žåããã¯ãã«ã«ã¯æ¹åããããŸãããã€ãŸããããŒã³ã¯ç§»åããŸããã
- CharacterMovementã³ã³ããŒãã³ãã¯ã Add Movement InputããçµæãååŸããPawnããã®æ¹åã«ç§»åããŸãã
MoveRightã®ããã»ã¹ã
ç¹°ãè¿ããŸããã
Get Actor Forward Vectorã
Get Actor Right Vectorã«çœ®ãæããŸãã
åãã確èªããã«ã¯ãã²ãŒã ã¢ãŒãã§ããã©ã«ãã§ããŒã³ãèšå®ããå¿
èŠããããŸãã
Pawnãããã©ã«ããšããŠèšå®
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ããŠãã¡ã€ã³ãšãã£ã¿ãŒã«æ»ããŸãã [
ã¯ãŒã«ãèšå®]ããã«ãéãã
[ ã²ãŒã ã¢ãŒã]ã»ã¯ã·ã§ã³ãèŠã€ããŸãã
ããã©ã«ãã®ããŒã³ã¯ã©ã¹ã®å€ã
BP_Playerã«å€æŽã
ãŸã ã
æ³šïŒ [ã¯ãŒã«ãèšå®]ããã«ããªãå Žåã¯ãããŒã«ããŒã«ç§»åããŠ[ èšå®] \ [ã¯ãŒã«ãèšå®]ãéžæããŸãã
ã²ãŒã ãéå§ãããšã
BP_Playerãèªåçã«äœ¿çšãã
ãŸã ã
PlayãæŒããããŒ
W ã
A ã
Sããã³
Dã䜿çšããŠã¬ãã«ã移åããŸãã
次ã«ãé ãåãããã®ãã€ã³ãã£ã³ã°ãäœæããŸãã
æŠèŠãã€ã³ãã£ã³ã°ãäœæãã
ãããžã§ã¯ãèšå®ãéããŸãã
LookHorizoâântalããã³
LookVerticalãšãã2ã€ã®
軞ãããã³ã°ãäœæããŸãã
LookHorizoâântalã®ããŒã
Mouse Xã«çœ®ãæããŸã
ããã®ãã€ã³ãã£ã³ã°ã¯ãããŠã¹
ãå³ã«åãããšæ£ã®å€ãçæããéãåæ§ã§ãã
LookVerticalã®ããŒã
Mouse Yã«å€æŽããŸã
ããã®ãã€ã³ãã£ã³ã°ã¯ãããŠã¹ã
äžã«åãããšæ£ã®å€ãçæããéãåæ§ã§ãã
次ã«ãèŠåãããã®ããžãã¯ãäœæããå¿
èŠããããŸãã
å®è£
ã¬ãã¥ãŒ
Pawnã«
ã«ã¡ã©ã³ã³ããŒãã³ãããªãå ŽåãUnrealã¯èªåçã«ã«ã¡ã©ãäœæããŸãã ããã©ã«ãã§ã¯ãã«ã¡ã©ã¯
ã³ã³ãããŒã©ãŒã®å転ã䜿çšããŸãã
泚ïŒã³ã³ãããŒã©ãŒã«ã€ããŠè©³ããç¥ãããå Žåã¯ã 人工ç¥èœã®ãã¥ãŒããªã¢ã«ãã芧ãã ããã
ã³ã³ãããŒã©ãŒã¯ç©ççã§ã¯ãªããšããäºå®ã«ãããããããã³ã³ãããŒã©ãŒã«ã¯ãŸã é çªããããŸãã ããã¯ãããŒã³ã®ç®ãšã«ã¡ã©ãç°ãªãæ¹åã«åããããšãã§ããããšãæå³ããŸãã ããšãã°ãäžäººç§°ã²ãŒã ã§ã¯ããã£ã©ã¯ã¿ãŒãšã«ã¡ã©ãåžžã«åãæ¹åãåããŠãããšã¯éããŸããã
ã²ãŒã å
ã§æåã®äººããã«ã¡ã©ãå転ãããã«ã¯ãã³ã³ãããŒã©ãŒã®å転ãå€æŽããã ãã§ååã§ãã
BP_Playerãéãã
LookHorizoâântalã€ãã³ããäœæããŸãã
ã«ã¡ã©ãå·ŠãŸãã¯å³ã«å転ãããã«ã¯ã
ãšãŒã調æŽããå¿
èŠããããŸãã
ã³ã³ãããŒã©ãŒãšãŒå
¥åã®è¿œå ãäœæãã次ã®ããã«æ¥ç¶ããŸãã
ããã§ãããŠã¹ãæ°Žå¹³ã«ç§»åãããšãã³ã³ãããŒã©ãŒãå·ŠãŸãã¯å³ã«å転ããŸãã ã«ã¡ã©ã¯ã³ã³ãããŒã©ãŒã®å転ã䜿çšãããããå転ããŸãã
LookVerticalã®ããã»ã¹ãç¹°ãè¿ããŸããã
Add Controller Yaw Inputã
Add Controller Pitch Inputã«çœ®ãæã
ãŸã ã
ããã§ã²ãŒã ãéå§ãããšãã«ã¡ã©ã®åçŽæ¹åã®åãã
å転ããŠããããšã
ããããŸãã ããã¯ãããŠã¹ã
äžã«åãã
ãšãã«ã¡ã©ã
äžã«èŠããããšãæå³ããŸãã
éå転å¶åŸ¡ãå¿
èŠãªå Žåã¯ã
Axis Valueã«
-1ãæããŸãã ããã«ããã
Axis Valueãå転ããã³ã³ãããŒã©ãŒã®åŸæãå転ããŸãã
[
ã³ã³ãã€ã« ]ãã¯ãªãã¯ãã[
åç ]ãã¯ãªãã¯ããŸãã ããŠã¹ã§èŠãŠåã£ãŠãã ããã
ãã¹ãŠã®åããšå¯èŠæ§ã®æºåãã§ããã®ã§ã次ã¯æŠåšãäœæããŸãããïŒ
æŠåšäœæ
ãã«ãŒããªã³ãã¯ã©ã¹ãäœæãããšãã«ã芪ã¯ã©ã¹ãéžæã§ããããšãèŠããŠããŸããïŒ ç¬èªã®ãã«ãŒããªã³ãã芪ãšããŠéžæããããšãã§ããŸãã ããã¯ãå
±éã®æ©èœãŸãã¯å±æ§ãå
±æããããŸããŸãªã¿ã€ãã®ãªããžã§ã¯ããããå Žåã«åœ¹ç«ã¡ãŸãã
ããŸããŸãªçš®é¡ã®è»ãäœæããå¿
èŠããããšããŸãããã é床ãè²ãªã©ã®å€æ°ãå«ãããŒã¹ã«ãŒã¯ã©ã¹ãäœæã§ããŸãã 次ã«ãè»ã®åºæ¬ã¯ã©ã¹ã芪ãšããŠäœ¿çšããã¯ã©ã¹ïŒåïŒãäœæã§ããŸãã ååã¯ã©ã¹ã«ã¯åãå€æ°ãå«ãŸããŸãã ããã§ãããŸããŸãªé床ãšè²ã®ãã·ã³ãç°¡åã«äœæã§ããŸãã
åãæ¹æ³ã§ãæŠåšãäœæã§ããŸãã ãããè¡ãã«ã¯ãæåã«åºæ¬ã¯ã©ã¹ãäœæããå¿
èŠããããŸãã
åºæ¬æŠåšã¯ã©ã¹ã®äœæ
ã¡ã€ã³ãšãã£ã¿ã«æ»ã
ãã¿ã€ã
Actorã® ãã«ãŒããªã³ãã¯ã©ã¹ãäœæããŸãã
BP_BaseGunãšååã
ä»ããŠéããŸãã
次ã«ãæŠåšã®ããããã£ãå®çŸ©ããå€æ°ãããã€ãäœæããŸãã
floatåã®æ¬¡ã®å€æ°ãäœæããŸãã
- MaxBulletDistanceïŒå匟䞞ã®æ倧ç¯å²
- æå·ïŒåŒŸäžžã俳åªã«åœãã£ããšãã«äžãã匟䞞ã®é
- FireRateïŒæŠåšã«ãã£ãŠçºå°ãããã·ã§ããéã®ã®ã£ããïŒç§åäœïŒ
泚ïŒããã©ã«ãã§ã¯ããã¹ãŠã®å€æ°ã®å€ã¯ãŒãã§ããããã¯ãã¥ãŒããªã¢ã«ã«éåžžã«é©ããŠããŸãã ãã ããæ°ããæŠåšã¯ã©ã¹ã«ç°ãªãããã©ã«ãå€ãèšå®ããå Žåã¯ã BP_BaseGunã§èšå®ããå¿
èŠããããŸãã
次ã«ããã®æŠåšã®ç©ççãªè¡šçŸãå¿
èŠã§ãã
Static Meshã³ã³ããŒãã³ããè¿œå ãã
GunMeshãšããååã
ä»ããŸãã
ä»ã®ãšããéçã¡ãã·ã¥ãéžæããå¿é
ã¯ãããŸããã ããã«ã€ããŠã¯ãåæŠåšã¯ã©ã¹ãäœæãã次ã®ã»ã¯ã·ã§ã³ã§æ±ããŸãã
åæŠåšã¯ã©ã¹ãäœæãã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ããŠãã¡ã€ã³ãšãã£ã¿ãŒã«æ»ããŸãã åã¯ã©ã¹ãäœæããã«ã¯ã
BP_BaseGunã
å³ã¯ãªãã¯ã ã
ã åãã«ãŒããªã³ãã¯ã©ã¹ã®äœæ ããéžæã
ãŸã ã
BP_Rifleãšããååã
ä»ããŠéããŸãã
ã¯ã©ã¹ã®ããã©ã«ããéããå€æ°ã次ã®å€ã«èšå®ããŸãã
- MaxBulletDistanceïŒ 5000
- ãã¡ãŒãžïŒ 2
- çºå°éåºŠïŒ 0.1
ã€ãŸããå匟䞞ã®æ倧ãã¹ã¯
5000ã«ãªããŸãã 圌女ã俳åªã«ãªã£ãå Žåã圌女ã¯
2ãã€ã³ãã®ãã¡ãŒãžãäžããŸãã ããŒã¹ããçºå°ãããšããåã·ã§ããã®åã®ééã¯å°ãªããšã
0.1ç§ã§ãã
次ã«ãæŠåšã§äœ¿çšãããã¡ãã·ã¥ãæå®ããå¿
èŠããããŸãã
GunMeshã³ã³ããŒãã³ããéžæãã
éçã¡ãã·ã¥ã®å€ã
SM_Rifleã«èšå®ã
ãŸã ã
ããã§æŠåšã®æºåãã§ããŸããã [
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BP_Rifleãéã
ãŸã ã
次ã«ãç¬èªã®ã«ã¡ã©ã³ã³ããŒãã³ããäœæããŸãã ã«ã¡ã©ã®äœçœ®ããã䟿å©ã«å¶åŸ¡ã§ããŸãã ãŸããæŠåšãã«ã¡ã©ã«åãä»ããŠãåžžã«ã«ã¡ã©ã®åã«ããããã«ããããšãã§ããŸãã
ã«ã¡ã©äœæ
BP_Playerãéãã
ã«ã¡ã©ã³ã³ããŒãã³ããäœæããŸãã
FpsCameraãšããååã
ä»ããŸãã
ããã©ã«ãã®äœçœ®ã¯éåžžã«äœãããããã¬ãŒã€ãŒã¯å°ããæãããããããŸããã
FpsCameraã«ã¡ã©ã®
å Žæã
ïŒ 0ã0ã90ïŒã«å€æŽã
ãŸã ã
ããã©ã«ãã§ã¯ãã«ã¡ã©ã³ã³ããŒãã³ãã¯ã³ã³ãããŒã©ãŒã®å転ã䜿çšããŸããã ãããä¿®æ£ããã«ã¯ã[詳现]ããã«ã«ç§»åãã[
ã«ã¡ã©èšå®] \ [ããŒã³ã³ã³ãããŒã«ã®å転ã䜿çš]ããªã³ã«ããŸãã
次ã«ãæŠåšãé
眮ããå Žæãèšå®ããå¿
èŠããããŸãã
æŠåšã®å Žæ
æŠåšã®å Žæãäœæããã«ã¯ã
Sceneã³ã³ããŒãã³ãã䜿çšã§ããŸãã ãããã®ã³ã³ããŒãã³ãã¯ãå€æã®ã¿ãå«ããããå Žæã®èšå®ã«æé©ã§ãã
FpsCameraãéžæãã
Sceneã³ã³ããŒãã³ããäœæããŸãã ãããã£ãŠãã«ã¡ã©ã«æ¥ç¶ãããŸãã
GunLocationãšããååã
ä»ããŸãã
GunLocationã
FpsCameraã«ã¢ã¿ãããããããæŠåšã¯åžžã«ã«ã¡ã©ã«å¯Ÿããäœçœ®ãç¶æããŸãã ãããã£ãŠãã«ã¡ã©ã®åã«æŠåšãåžžã«è¡šç€ºãããŸãã
次ã«ã
GunLocationã³ã³ããŒãã³ãã®
å Žæã
ïŒ 30ã14 ã-12ïŒã«èšå®ããŸãã ãã®ãããæŠåšãã«ã¡ã©ã®åã«å°ã暪ã«çœ®ããŸãã
次ã«ã
å転å€
ïŒ0ã0ã-95ïŒãèšå®ããŸãã æŠåšãåãä»ãããšãåžžã«ç»é¢ã®äžå€®ã«åããããŠããããã«èŠããŸãã
次ã«ãæŠåšãäœæããŠ
GunLocationã«ã¢ã¿ããããå¿
èŠããããŸãã
æŠåšã®äœæãšåãä»ã
ã€ãã³ãBeginPlayãèŠã€ããŠã
Spawn Actor from ClassãäœæããŸãã
Classã
BP_Rifleã«èšå®ã
ãŸã ã
åŸã§æŠåšã䜿çšããå¿
èŠããããããå€æ°ã«æ ŒçŽããŸãã ã¿ã€ã
BP_BaseGunã®å€æ°ãäœæãã
EquippedGunãšããååãä»ããŸãã
éèŠãªã®ã¯ãå€æ°ãBP_Rifleåã§ã¯ãªãããšã§ãããã¬ãŒã€ãŒã¯ã1ã€ã ãã§ãªããããŸããŸãªçš®é¡ã®æŠåšãæã€ããšãã§ããããã§ãã å¥ã®ã¿ã€ãã®æŠåšãäœæãããšã BP_Rifleã¿ã€ãã®å€æ°ã«ä¿åã§ããªããªããŸãã ããã¯ãé·æ¹åœ¢ã®ç©Žã«åãå
¥ããããšãããããªãã®ã§ãã
å€æ°ã®BP_BaseGunã¿ã€ããéžæããŠãå€ãã®ã圢ç¶ãã«é©åãã倧ããªãç©ŽããäœæããŸããã
EquippedGunã
Return Value Spawn Actor From Classã«èšå®ããŸãã
æŠåšãåãä»ããã«ã¯ã
AttachToComponentã䜿çšã§ããŸãã ãããäœæãã
ãã±ãŒã·ã§ã³ã«ãŒã«ãš
ããŒããŒã·ã§ã³ã«ãŒã« ã[ã¿ãŒã²ããã«
ã¹ããã]ã«èšå®ããŸã ã ããã«ãããæŠåšã®äœçœ®ãšå転ã¯èŠªãšåãã«ãªããŸãã
次ã«ã
GunLocationãžã®ãªã³ã¯ãäœæãã次ã®ããã«ãã¹ãŠãæ¥ç¶ããŸãã
èŠçŽãããšïŒ
- BP_Playerãäœæãããšã BP_Rifleã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããŸã
- EquippedGunã¯ãä»åŸã®åç
§ã®ããã«ãäœæãããBP_Rifleãžã®ãªã³ã¯ãä¿åããŸãã
- AttachToComponentã¯æŠåšãGunLocationã«æ¥ç¶ããŸã
[
ã³ã³ãã€ã« ]ãã¯ãªãã¯ãã[
åç ]ãã¯ãªãã¯ããŸãã ãã¬ã€ã€ãŒãäœæãããšãæŠåšãäœæãããŸãïŒ ã³ãŒããªã³ã°äžãæŠåšã¯åžžã«ã«ã¡ã©ã®åã«ãªããŸãã
ä»ãã楜ãã¿ãå§ãŸããŸãïŒæ®åœ±ããŸãïŒ è¡é æåãã©ããã«ããããããã©ããã確èªããã«ã¯ãã©ã€ã³
ãã¬ãŒã¹ã䜿çšã§ããŸãã
匟䞞å°æ
ãã¬ãŒã¹ã©ã€ã³ã¯ãéå§ãã€ã³ããšçµäºãã€ã³ããåãåãïŒã©ã€ã³ã圢æããïŒé¢æ°ã§ãã 圌女ã¯äœãã«ã€ãŸãããŸã§ãæåããæåŸãŸã§çŽç·ã§åãã€ã³ãããã§ãã¯ããŸãã 匟䞞ã®ãããããã§ãã¯ããã²ãŒã ã§ã¯ããã®æ¹æ³ãæããã䜿çšãããŸãã
å°æã¯æŠåšã®æ©èœã§ããããããã¬ã€ã€ãŒã§ã¯ãªãæŠåšã®ã¯ã©ã¹ã§å®è¡ããå¿
èŠããããŸãã
BP_BaseGunãéãã
æ®åœ±æ©èœãäœæããŸãã
次ã«ã2ã€ã®
ãã¯ã¿ãŒå
¥åãäœæãããããã«
StartLocationããã³
EndLocationãšããååãä»ããŸãã ãããã¯ããã¬ãŒã¹è¡ã®éå§ç¹ãšçµäºç¹ã«ãªããŸãïŒ
BP_Playerãã
æž¡ããŸã ïŒã
LineTraceByChannelã䜿çšããŠ
è¡ãã¬ãŒã¹ãå®è¡ã§ããŸãã ãã®ããŒãã¯ã
å¯èŠæ§ãŸãã¯
ã«ã¡ã©ã®ã³ãªãžã§ã³ãã£ãã«ã䜿çšããŠãããããã§ãã¯ããŸãã 次ã®ããã«äœæããŠæ¥ç¶ããŸãã
ããã§ãè¡ã®ãã¬ãŒã¹ãäœãã«å
¥ã£ãŠãããã©ããã確èªããå¿
èŠããããŸãã
ãã©ã³ããäœæãã次ã®ããã«æ¥ç¶ããŸãã
ããããããšã
æ»ãå€ã¯
trueãåºåãããã®éãåæ§ã§ãã
匟䞞ãåœãã£ãå Žæã«é¢ããèŠèŠçãªãã£ãŒãããã¯ããã¬ãŒã€ãŒã«äžããã«ã¯ãããŒãã£ã¯ã«ãšãã§ã¯ãã䜿çšã§ããŸãã
ãã¬ãããããããŒãã£ã¯ã«ã®äœæ
ãŸããããããã¬ãŒã¹ã®å ŽæãååŸããå¿
èŠããããŸãã ã°ã©ãäžã§
Out Hitã
å·Šã¯ãªãã¯ããŸã ã ã¡ãã¥ãŒãã
Break Hit ResultãéžæããŸãã
ãããã£ãŠãçŽæ¥ãã¬ãŒã¹çµæã«é¢é£ããããŸããŸãªé£çµ¡å
ãæã€ããŒããäœæããŸãã
ãã±ãŒã·ã§ã³ã§ã¹ããŒã³ãšããã¿ãäœæãã
ãšããã¿ãã³ãã¬ãŒãã
PS_BulletImpactã«èšå®ã
ãŸã ã 次ã«ããã®
å Žæã
Break Hit ResultããŒãã®
å Žæã«æ¥ç¶ããŸãã
ãããã©ã®ããã«èŠãããã§ãïŒ
èŠçŽãããšïŒ
- ã·ã¥ãŒããå®è¡ãããšãéä¿¡ãããéå§ç¹ãšçµäºç¹ã§ç·ããã¬ãŒã¹ããŸã
- ããããä¿®æ£ããããšã Spawn Emitter at Locationã¯ããããã€ã³ãã§PS_BulletImpactãäœæããŸãã
ã·ã¥ãŒãã£ã³ã°ããžãã¯ãå®æããã®ã§ãããã䜿çšããå¿
èŠããããŸãã
é¢æ°åŒã³åºããæ®åœ±ãã
ãŸããæ®åœ±çšã®ããŒãã€ã³ããäœæããå¿
èŠããããŸãã [
ã³ã³ãã€ã« ]ãã¯ãªãã¯ããŠã[
ãããžã§ã¯ãèšå®]ãéããŸãã
Shootãšããæ°ãã
Axis MappingãäœæããŸãã
å·ŠããŠã¹ãã¿ã³ãéžæããŠã
ãããžã§ã¯ãèšå®ãéããŸãã
次ã«ã
BP_PlayerãéããŠã
ã·ã¥ãŒãã€ãã³ããäœæããŸãã
ãã¬ãŒã€ãŒã
ã·ã¥ãŒãããŒãæŒãããã©ããã確èªããã«ã¯ã
軞ã®å€ã1ïŒ
1 ïŒã«çãããã©ããã確èªããã ãã§ãã éžæããããŒããäœæããŸãã
次ã«ã
EquippedGunãžã®ãªã³ã¯ãäœæãããã®
ã·ã¥ãŒãæ©èœãåŒã³åºããŸãã
次ã«ãã©ã€ã³ããã¬ãŒã¹ããããã®éå§ç¹ãšçµäºç¹ãèšç®ããå¿
èŠããããŸãã
çŽç·ãã¬ãŒã¹ãã€ã³ãã®èšç®
å€ãã®FPSã§ã¯ã匟䞞ã¯æŠåšããã§ã¯ãªããã«ã¡ã©ããé£ã³åºããŸãã ããã¯ãã«ã¡ã©ãæ¢ã«ã¹ã³ãŒããšå®å
šã«æŽåããŠããããã§ãã ãããã£ãŠãã«ã¡ã©ããæ®åœ±ãããšã匟䞞ã¯ã«ãŒãœã«ã®ããå Žæã«é£ã¶ããšãä¿èšŒãããŸãã
泚ïŒäžéšã®ã²ãŒã ã¯ãŸã éææŠãå®è£
ããŠããŸãã ãã ããæ£ç¢ºã«äžç®ã§æ®åœ±ããã«ã¯ãè¿œå ã®èšç®ãå¿
èŠã§ãã
FpsCameraãžã®ãªã³ã¯ãäœæããããã
GetWorldLocationã«æ¥ç¶ã
ãŸã ã
次ã«ããšã³ããã€ã³ããå¿
èŠã§ãã æŠåšã«
MaxBulletDistanceå€æ°ãããããšãå¿ããªãã§ãã ããã ããã¯ããšã³ããã€ã³ããã«ã¡ã©ãã
MaxBulletDistanceãŠãããã®è·é¢ã«ããå¿
èŠãããããšãæå³ããŸãã ãããå®è£
ããã«ã¯ãå°çšããŒããäœæããŸãã
次ã«ããã¹ãŠã次ã®ããã«æ¥ç¶ããŸãã
èŠçŽãããšïŒ
- ãã¬ã€ã€ãŒãããŠã¹ã®å·Šãã¿ã³ãæŒãããŸãŸã«ãããšãæŠåšã¯ã«ã¡ã©ã®éå§ç¹ã§åŒŸäžžãæŸåºããŸã
- 匟䞞ã¯MaxBulletDistanceã§æå®ãããè·é¢ãé£è¡ããŸã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ããŠãã[
åç]ãã¯ãªãã¯ããŸãã
ããŠã¹ã®
å·Šãã¿ã³ã
æŒãã
ãŸãŸ ãæ®åœ±ãéå§ããŸãã
æŠåšã¯ãã¹ãŠã®ãã¬ãŒã ã§æã¡ãŸããã ããã¯éãããããã次ã®ã¹ãããã§ã¯ãæŠåšã®çºå°é »åºŠãæžãããŸãã
çºç«çã®äœäž
ãŸãããã¬ã€ã€ãŒãã·ã¥ãŒãã§ãããã©ãããå€æããå€æ°ãå¿
èŠã§ãã
BP_Playerãéãã
CanShootãšãã
ããŒã«å€æ°ãäœæããŸãã ããã©ã«ãã§
trueã«èšå®ããŸãã
CanShootã
trueã®å Žåããã¬ãŒã€ãŒã¯å°æã§ãããã®éãå¯èœã§ãã
Branchã»ã¯ã·ã§ã³ã次ã®ãã®ã«çœ®ãæããŸãã
ãã¬ã€ã€ãŒã¯ã
ã·ã¥ãŒãããŒãæŒããã
CanShootå€æ°ã
trueã®å Žåã«ã®ã¿ã·ã¥ãŒãã§ã
ãŸã ã
éžæããããŒããè¿œå ããŸãïŒ
å€æŽç¹ïŒ
- ãã¬ãŒã€ãŒã¯ã å·ŠããŠã¹ãã¿ã³ãæŒãããŸãŸ ã CanShootãtrueã®å Žåã«ã®ã¿æ®åœ±ã§ããŸãã
- ãã¬ãŒã€ãŒã匟䞞ãçºå°ãããšã CanShootå€æ°ã¯falseã« èšå®ãããŸã ã ããã«ããããã¬ãŒã€ãŒã¯åã³æ®åœ±ã§ããªããªããŸãã
- FireRateã§æå®ãããééã®åŸã CanShootã¯åã³trueã«èšå®ãããŸãã
[
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BP_Playerãéã
ãŸã ã [
åç]ãã¯ãªãã¯ããŠãæ°ããçºç ²çã確èªããŸãã
ããã§ãã¿ãŒã²ãããšåŒŸäžžã«å¿çãããã¿ã³ãæããŸãã ããã¯
ããããã«
ãã¡ãŒãžãè¿œå ããããšã§å®è¡ã§ããŸãã
ãã¡ãŒãžãäžãã
Unrealã®ãã¹ãŠã®ã¢ã¯ã¿ãŒã¯ãã¡ãŒãžãåããèœåãæã£ãŠããŸãã ãã ããã¢ã¯ã¿ãŒã
ã©ã®ããã«åå¿ãã
ãã¯èªåã§éžæã§ããŸãã
ããšãã°ãæŠéãã£ã©ã¯ã¿ãŒã¯ãã¡ãŒãžãåãããšäœåã倱ããŸãã ãã ãããã«ãŒã³ãªã©ã®äžéšã®ãªããžã§ã¯ãã¯æ£åžžã§ã¯ãªãå ŽåããããŸãã 次ã«ããã¡ãŒãžãåãããšãã«ççºããããã«ããŒã«ãããã°ã©ã ã§ããŸãã
ãã¡ãŒãžãåããã¢ã¯ã¿ãŒãå¶åŸ¡ã§ããããã«ããããã«ããŸããã¡ãŒãžãé©çšããå¿
èŠããããŸãã
BP_BaseGunãéãã
ã·ã¥ãŒãæ©èœã®æåŸã«
ãã¡ãŒãžã®é©çšãè¿œå ããŸãã
次ã«ãã©ã®ã¢ã¯ã¿ã«ãã¡ãŒãžãäžãããã瀺ãå¿
èŠããããŸãã ç§ãã¡ã®å Žåãããã¯çŽæ¥ãã¬ãŒã¹ã該åœããã¢ã¯ã¿ãŒã§ãã
ç Žæãã
ã¢ã¯ã¿ãã ãã¬ãŒã¯ãããçµæããŒãã®
ãããã¢ã¯ã¿ã«æ¥ç¶ããŸãã
æåŸã«ãè¡ãããæå·ã®éã瀺ãå¿
èŠããããŸãã
Damageãžã®ãªã³ã¯ãååŸãã
Base Damageã«æ¥ç¶ããŸãã
ä»ãããªãã
ã·ã¥ãŒããåŒã¶ãšã
ãããã¯çŽæ¥ã®çè·¡ã«é¥ã俳åªã«ãã¡ãŒãžãäžããŸãã [
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BP_BaseGunãéã
ãŸã ã
次ã«ãã¢ã¯ã¿ãŒãã©ã®ããã«ãã¡ãŒãžãåããããåŠçããå¿
èŠããããŸãã
ãã¡ãŒãžåŠç
ãŸããã¿ãŒã²ãããã©ã®ããã«ãã¡ãŒãžãåããããåŠçããŸãã
BP_Targetãéãã
ã€ãã³ã AnyDamageãäœæããŸãã ãã®ã€ãã³ãã¯ãã¢ã¯ã¿ãŒã
ãŒã以å€ã®ãã¡ãŒãžãåãããšãã«çºçããŸãã
TakeDamageé¢æ°ãåŒã³åºããŠã
æå·ãã³ãæ¥ç¶ããŸãã ããã«ãããã¿ãŒã²ããã®
Healthå€æ°ãããã«ã¹ãå·®ãåŒãããã¿ãŒã²ããã®è²ãæŽæ°ãããŸãã
ã¿ãŒã²ããããã¡ãŒãžãåãããšããã«ã¹ã倱ããŸãã [
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BP_Targetãéã
ãŸã ã
次ã«ããã¿ã³ãã©ã®ããã«ãã¡ãŒãžãåããããåŠçããå¿
èŠããããŸãã
BP_ResetButtonãéãã
ã€ãã³ã AnyDamageãäœæããŸãã 次ã«ã
ResetTargetsé¢æ°ãåŒã³åºããŸãã
ããã«ããããã¿ã³ãæŒããããšãã«ãã¹ãŠã®ã¿ãŒã²ããã埩å
ãããŸãã [
ã³ã³ãã€ã«]ãã¯ãªãã¯ãã
BP_ResetButtonãéã
ãŸã ã
[
åç]ãã¯ãªãã¯ããŠãã¿ãŒã²ããã§ã®æ®åœ±ãéå§ããŸãã ç®æšãå埩ãããå Žåã¯ããã¿ã³ãæŒããŠãã ããã
次ã¯ã©ãã«è¡ããŸããïŒ
å®æãããããžã§ã¯ãã¯
ããããããŠã³ããŒãã§ã
ãŸã ã
ãã®ãã¥ãŒããªã¢ã«ã§äœæãããFPSã¯éåžžã«åçŽã§ãããç°¡åã«æ¡åŒµã§ããŸãã ããŸããŸãªçš®é¡ã®å°æé »åºŠãšãã¡ãŒãžã§ãããå€ãã®æŠåšãäœæããŠã¿ãŠãã ããã ãªããŒãæ©èœãè¿œå ããããšãã§ããŸãïŒ