
å ã®èª²é¡ãžã®ãªã³ã¯ïŒ www.unity3dstudent.com/2010/07/challenge-c02-beginner
äžçªäžã®è¡ïŒãã¬ãŒã€ãŒã®èŠéå ã®ã¹ããŒã¹ãæŒããšãããã¯ã¹ãèœäžãå§ããæçµçã«ã¿ãŒã²ããã«åãã£ãŠå¥ã®ããã¯ã¹ãèµ·åããã·ãŒã³ãäœæããå¿ èŠããããŸãã ã¿ãŒã²ãããæã£ãåŸãããã€ãã®é³ã§æ¶ããã¯ãã§ãã ããã¯ã¹ã®èµ·åã¯ã¬ããŒã«åºã¥ããŠããŸãã1ã€ã®ããã¯ã¹ã¯æ¢ã«çåŽã«ãããå¥ã®ããã¯ã¹ã¯ã¬ããŒã®å察åŽã«ãããŸãã
UPDïŒ 3çªç®ã®ã¿ã¹ã¯
ããŒã1ïŒã·ãŒã³ã
ãŸããå¹³é¢ãå æºãäœæããããã¹ãŠãã¯ã£ãããšèŠããããã«ãã«ã¡ã©ãé 眮ããŸãïŒããã¯åã®ã¿ã¹ã¯ã®åæã§èª¬æããŸãïŒã
次ã«ãã¿ãŒã²ãããè¿œå ããŸãããã¥ãŒããäœæããé©åãªã¿ãŒã²ããã®ãµã€ãºã«æ¡å€§ããŸãã OX軞ã«å¯ŸããŠåçŽã«ãªãããã«ã¿ãŒã²ããã移åããŸãïŒè»žã®æ¹åã¯ã[ã·ãŒã³]ã¿ãã®å³äžãã衚瀺ã§ããŸãïŒã ã¿ãŒã²ããã«äŒŒããšãã£ã¿ãŒã§åçŽãªãã¯ã¹ãã£ãŒãããã«ã¹ã±ãããïŒæ£æ¹åœ¢ã«ãïŒããããžã§ã¯ãããã«ã®ãããªã¢ã«ãã©ã«ããŒã«ä¿åããŸãïŒãã®ãã©ã«ããŒãäœæããåŸïŒïŒ

targetMaterialãããªã¢ã«ããããžã§ã¯ãã«å床远å ãïŒMaterialsãã©ã«ããŒå ïŒãæ°ããè¿œå ãããã¯ã¹ãã£ãïŒã€ã³ã¹ãã¯ã¿ãŒããã«å ã®ïŒTextureãã£ãŒã«ãã«ãã©ãã°ããŸãã ãããªã¢ã«ãã¿ãŒã²ããã«ãã©ãã°ããŸãïŒéå±€ããã«ã§ãã®ãªããžã§ã¯ãããã¿ãŒã²ããããšåŒã³ãŸãããïŒã
ã«ã¿ãã«ãã¬ããŒã®äžè©±ãããŸãããã ãã¥ãŒããã·ãŒã³ã«è¿œå ããplank1ãšåŒã³ããããŒãå ã«ãåŒã䌞ã°ããŸãã

ä»ããplank1ã«ã³ã³ããŒãã³ããã³ãžãžã§ã€ã³ããè¿œå ããŸãïŒã³ã³ããŒãã³ã->ç©çåŠ->ãã³ãžãžã§ã€ã³ãïŒ-翻蚳ã§ã¯ããã³ãžããæå³ããŸãã äžèšã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ãæ¢ã«è¿œå ãããŠããŸã-ãªã¬ã³ãžè²ã®ãã¯ã¿ãŒã衚瀺ãããŠããŸãã ãªããžã§ã¯ããå転ãã軞ã瀺ããŸãã çŸåšããã®æ¹åã¯OX軞ãšäžèŽããŠããŸãã 確èªããã«ã¯ãOXã«å¯ŸããŠããŒãããããã«å転ãããã·ãŒã³ãéå§ããŸãã
ãã®ãããå転軞ã¯ç§ãã¡ã«ã¯é©ããŠããŸãã-çµå±ãããŒããéãå転ããããšããã®ãšããžã®1ã€ããã®ããã¯ã¹ãã¿ãŒã²ããã®æ¹åã«é£ã¶ããšãå¿ èŠã§ãã Inspectorããã«ã§ãplank1ã®Hinge Jointã³ã³ããŒãã³ããèŠã€ããAxisãã£ãŒã«ãã°ã«ãŒããèŠã€ããŸãã ãããå転軞ã§ãã ããã©ã«ãã§ã¯ã次ã®å€ãèšå®ãããŠããŸãã
XïŒ1
YïŒ0
ZïŒ0
ããã¯ãOX軞ã®åæ¹åæ§ã瀺ããŠããŸãã OZã«å¹³è¡ãªè»žã¯ç§ãã¡ã«é©ããŠããŸãã ãã£ãŒã«ãZã1ã«èšå®ããæ®ãããŒãã«èšå®ããŸãã ã¹ããŒãžäžã®plank1ã®äžå¿ããã®ãªã¬ã³ãžè²ã®ãã¯ãã«ã®æ¹åãéã«ãªã£ãŠããããšã«æ³šæããŠãã ããã

ã»ãŒå®æããã¬ããŒã§ã ããã§ã®åé¡ã¯ãããŒã«ãã€ã¹ã«ååãªéç¹ã眮ãããŠããªãããšã§ãã è¿œå ïŒãã¥ãŒããè¿œå ãïŒplank2ãšåŒã³ãŸãããïŒãå§çž®ãïŒäžã®ã¹ã¯ãªãŒã³ã·ã§ãããåç §ïŒãplank1ãšãããã«äº€å·®ããããã«ç§»åããŠãã°ãªããã圢æããŸãïŒãããŸã§ã¯ä»®æ³ã®ã¿ïŒïŒ


plank2 Rigidbodyã³ã³ããŒãã³ããè¿œå ããŸãïŒplank1ã«ã¯ããã³ãžãžã§ã€ã³ãã®è¿œå æã«ãã®ã³ã³ããŒãã³ãããã§ã«èªåçã«è¿œå ãããŠããŸãïŒã plank1ãšplank2ãä¿®æ£ãããããšãç©çãšã³ãžã³ã«ãéç¥ãããŸãããã plank1ãFixed Jointã³ã³ããŒãã³ãã«è¿œå ããŸãïŒComponent-> Physics-> Fixed JointïŒã Inspectorããã«ã®Connected Bodyãã£ãŒã«ãã®å€ãNoneïŒRigidbodyïŒã«ãªããŸããã éå±€ããã«ãããã®å Žæplank2ããã©ãã°ããŸãã
ã·ãŒã³ãå®è¡ãããšãã¬ããŒãäžæ¹ã®ç«¯ã«èœã¡ãæ§åãããããŸãã ããã¯ãã§ã«åã°ããããšã§ãã ã·ãŒã³ã«ç«æ¹äœãè¿œå ãããã®å·ŠïŒã«ã¡ã©ã«æãè¿ãïŒç«¯ã®ã¬ããŒã®ããäžã«é 眮ããŸãã ãã®å Žåããã¥ãŒãã®ãã¹ãŠã®æ¬¡å ã2åã«åæžããŸãã

Rigidbodyã³ã³ããŒãã³ããè¿œå ããŸãã ããã§ã·ãŒã³ãéå§ãããšãã¬ããŒãäžãããšãç«æ¹äœãæåŸãŸã§äžãããŸãïŒäžããïŒã ãã¶ã€ã³ã¯ãã·ã§ãããã®æºåãã§ããŠãããã«ãŠã³ã¿ãŒãŠã§ã€ããæºåããããã«æ®ããŸããã«ãŠã³ã¿ãŒãŠã§ã€ããèœã¡ããšãæ°ããè¿œå ããããã¥ãŒããé£è¡ããŸãã
ãã¬ããããããžã§ã¯ãã«è¿œå ããdropcubeãšåŒã³ãŸãã ã·ãŒã³ã«æ°ãããã¥ãŒããäœæããéå±€ããã«ãããã¬ããã«ãã©ãã°ããŸãã Rigidbodyã³ã³ããŒãã³ãããã¬ããã«è¿œå ãããã¥ãŒããã·ãŒã³ããåé€ããŸãã ãã¬ããã®è³ªéã30ã«èšå®ããŸããïŒäœæããã·ãŒã³ã«ãªããžã§ã¯ããé 眮ããããããã®å€ã«ãããèµ·åããããã¥ãŒããã¿ãŒã²ããã«å°éã§ããããã«ãªããŸãïŒã
ããã§ãã·ãŒã³ã«ç©ºã®ãªããžã§ã¯ãïŒã²ãŒã ãªããžã§ã¯ã->空ã®äœæïŒãååãããããŒã§è¿œå ããŸãã ã«ã¡ã©ã®èŠéå ã®ã«ã¡ã©ããé ãé¢ããã¬ããŒã®ç«¯ã®äžã«é 眮ããŸãïŒããã¯ã¡ã€ã³ã«ã¡ã©ãªããžã§ã¯ããéžæãã[ã²ãŒã ãªããžã§ã¯ã]-> [ãã¥ãŒãéžæã«æãã]ãéžæããããšã§ç¢ºèªã§ããŸãïŒ-ãããããã¥ãŒããåŸã§è¡šç€ºãããŸãïŒãããããã¥ãŒããšåãïŒïŒ

ããŒã2ïŒã¹ã¯ãªããã
ã¹ã¯ãªããã®éšåãæ±ããŸãããã
ãŸãããã¥ãŒããããããããšã¿ãŒã²ãããæ¶ããŸãã æåŸã®ã¿ã¹ã¯ïŒLINKïŒããSelfdestroyerã¹ã¯ãªãããååŸãïŒãã¹ãŠã®ã¿ã¹ã¯ã«1ã€ã®ãããžã§ã¯ãã䜿çšãããããæ°ããã¹ã¯ãªãããè¿œå ããå¿ èŠããããŸããã§ãã-ãã¹ãŠãæ¢ã«ãããžã§ã¯ãããã«ã«ãããŸãïŒããããã¿ãŒã²ãããªããžã§ã¯ãã«ã¢ã¿ããããŸãã ãã®ã¹ã¯ãªããã®å®å šãªã³ãŒãã次ã«ç€ºããŸãïŒéåžžã«å°ããïŒïŒ
using UnityEngine; using System.Collections; public class Selfdestroyer : MonoBehaviour { void OnCollisionEnter(Collision obj) { Destroy(gameObject); } }
ããã§ãBoxdropper CïŒã¹ã¯ãªããããããžã§ã¯ãã«è¿œå ããŸãã 圌ã¯ã¹ããŒã¹ããŒãã¯ãªãã¯ããŠãã¢ã¿ããå ã®ãªããžã§ã¯ãã®äœçœ®ã«ãã¥ãŒããäœæããå¿ èŠããããŸãïŒããæ£ç¢ºã«ã¯ãã€ã³ã¹ã¿ã³ã¹ãã¬ãããããããã¥ãŒããäœæããŸãïŒã
ããŒã¹ãããŒã¯ãžã®å¿çã®ã¿ãå¿ èŠãªãããUpdateã¡ãœãããStartã¡ãœããïŒèªåçæãããå ŽåïŒã¯åé€ããŸãã èšç»ãå®è£ ããã«ã¯ãå°ãªããšãããã¬ãããã¹ã¯ãªããã«æž¡ãå¿ èŠããããŸãã ã¿ã€ãGameObjectã®ãããªãã¯å€æ°ãã¯ã©ã¹ã«è¿œå ããŸãã
public GameObject cubePrefab;
æŽæ°æ¹æ³ãå€æŽããŸãã
void Update () { if (Input.GetButtonDown("Jump")) { GameObject.Instantiate(cubePrefab, transform.position, transform.rotation); } }
ãã®ã³ãŒãã«é¢ãã泚æäºé ïŒ
-ãŸããInput.GetButtonDownïŒ "Jump"ïŒã®ä»£ããã«ãInput.GetKeyDownïŒKeyCode.SpaceïŒã䜿çšã§ããŸãã 2çªç®ã®ãªãã·ã§ã³ã¯ã¹ããŒã¹ããŒã³ãŒãã«å³å¯ã«çµã³ä»ãããã1çªç®ã®ãªãã·ã§ã³ã¯ã²ãŒã ã³ã³ãããŒã«èšå®ã§ãžã£ã³ãããŒïŒããã©ã«ãã§ã¯ã¹ããŒã¹ïŒã®åœ¹å²ãæãããŸãã ãããã®èšå®ã¯ããããžã§ã¯ããã¢ã»ã³ãã«ããçµæã®å®è¡å¯èœãã¡ã€ã«ãå®è¡ããããšã§ç¢ºèªã§ããŸãïŒãããæ確ã§ãªãå Žåã¯ãããã»ã¹ããã詳现ã«ãã€ã³ãã§ããŸãïŒã
- æåã®ã¿ã¹ã¯ã®ã¹ã¯ãªãããšã¯ç°ãªããGameObject.InstantiateãåŒã³åºããšããé¢æ°ã®çµæã¯å¿ èŠãªããããã©ãã«ãä¿åãããªãããšã«ã泚æããŠãã ããã ååããªããžã§ã¯ããäœæããåŸãè¿œå ã§åŒ·å¶çã«æäœããå Žåãããã§ã¯å¿ èŠãããŸããã
-ãªãŒããŒããŒããããInstantiateé¢æ°ãããã§åŒã³åºããã3ã€ã®ãã©ã¡ãŒã¿ãŒããããŸããããªãã·ã§ã³ã1ã€ãããŸãïŒInstantiateïŒObject originalïŒã åŸè ã¯ãå®éã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæž¡ããããªããžã§ã¯ããšåãäœçœ®ãšå転ãã©ã¡ãŒã¿ãŒïŒ3ã€ã®ãã©ã¡ãŒã¿ãŒãæã€InstantiateåŒã³åºãã§ããããã2çªç®ãš3çªç®ã®ãã©ã¡ãŒã¿ãŒïŒãèšå®ããŸãã ãããã®ãã©ã¡ãŒã¿ãŒã¯ãã¹ã¯ãªãããã¢ã¿ãããããŠãããªããžã§ã¯ãã®å¯Ÿå¿ããå€ããååŸããããã®ã§ã¯ãªãããšã«æ³šæããŠãã ããïŒ
ããã§ãBoxdropperã¹ã¯ãªããããããžã§ã¯ãããã«ããéå±€ããã«ã®ãããããŒãªããžã§ã¯ãã«ãã©ãã°ããŸãã
ãŸããã¿ã¹ã¯ã¯ã»ãŒå®äºããŠããŸãã ã·ãŒã³ãéå§ããŠã¹ããŒã¹ããŒãæŒããšãç«æ¹äœãèœäžããå°ããªç«æ¹äœïŒãã§ã«ã¬ããŒã¢ãŒã äžã«ãã£ãïŒãã¿ãŒã²ããã«é£ã³èŸŒã¿ãŸãã èšèé£ããšã®å°ããªççŸã1ã€æ®ã£ãŠããŸããã¿ãŒã²ãããç Žå£ãããšãã«é³ãããŸããã
ãŸãããµãŠã³ãèªäœãã€ãŸãããçš®ã®ãµãŠã³ããæã€ãã¡ã€ã«ãå¿ èŠã§ãã éå»ã®ãããžã§ã¯ãã®1ã€ã§ããççºã®é³ãšé¢ä¿ã®ããæåã®é³ãèããŸããã ãããžã§ã¯ãã«ãµãŠã³ããè¿œå ããŸãïŒonDestroySoundãšããååã§ãïŒã
Unityã®ãµãŠã³ãã«é¢ããå°ãåæ çãªäœè«ã ããã§ã®é³ã¯ã¢ããš3DïŒ3DãµãŠã³ãïŒã§ãã å®éããªãŒãã£ãªã«ã¯1ãŸãã¯2ãã£ã³ãã«ã衚瀺ãããŸãã 空éäœçœ®ãããªãæ確ãªãšãã§ã¯ãïŒççºãè¡æé³ãªã©ïŒã§ã¯ãã¢ãã©ã«ãµãŠã³ãã䜿çšããããšããå§ãããŸããå®éã®é³éïŒãã¬ãŒã€ãŒãèãïŒã¯ããœãŒã¹ãããªã¹ããŒãŸã§ã®è·é¢ã«äŸåããããã§ãïŒãªãŒãã£ãªãªã¹ããŒã³ã³ããŒãã³ãã®ååšã«ãã£ãŠæ±ºãŸããŸãïŒãããã©ã«ãã§ã¯ãã¡ã€ã³ã«ã¡ã©ãªããžã§ã¯ãã«å«ãŸããŠããŸãïŒã
ãµãŠã³ãã3Dã§ããããšãå€æããå ŽåïŒã€ã³ã¹ãã¯ã¿ããã«ã«ã3DãµãŠã³ããã®ãã§ãã¯ããŒã¯ããããŸãïŒã絶æããªãã§ãã ããã ã3DãµãŠã³ããé ç®ã®ãã§ãã¯ãå€ããåãããã«ã§ã匷å¶çã«ã¢ãã©ã«ã«ããããéžæãããé©çšããã¯ãªãã¯ããŸãã 次ã«ãSelfdestroyerã¹ã¯ãªãããå€æŽããŸãã åçãããµãŠã³ãã®ãããªãã¯å€æ°ãå¿ èŠã§ãã
public AudioClip onDestroy;
次ã«ãOnCollisionEnterã¡ãœããã§ãDestroyã¡ãœããã®åŒã³åºãã«å ããŠããµãŠã³ãã®åçãè¿œå ããŸãã
void OnCollisionEnter(Collision obj) { AudioSource.PlayClipAtPoint(onDestroy, transform.position); Destroy(gameObject); }
ãã®ãããªAudioSource.PlayClipAtPointã¡ãœããã®åŒã³åºãã¯ãé³æºããã®ã¹ã¯ãªãããã¢ã¿ãããããŠãããªããžã§ã¯ãïŒtransform.positionïŒã®äœçœ®ã«ãããã®ããã«onDestroyãµãŠã³ããåçããŸãã
ã¹ããŒãžãŸãã¯éå±€ããã«ã§ã¿ãŒã²ãããªããžã§ã¯ããéžæãããµãŠã³ããã¡ã€ã«ïŒonDestroySoundïŒããããžã§ã¯ãããInspectorããã«ã®ãOn DestroyïŒAudio ClipïŒããã£ãŒã«ãã«ãã©ãã°ããŸãã
泚ïŒä»»æã®ãªããžã§ã¯ãã«ãªãŒãã£ãªãœãŒã¹ã³ã³ããŒãã³ããè¿œå ããã¹ã¯ãªããããããªãŒãã£ãªããšåŒã¶ããšãã§ããŸãã ãªããžã§ã¯ãã®å Žæã§éä¿¡ããããµãŠã³ããåçããç¹å¥ãªæ¹æ³ããããŸãã
audio.PlayOneShot(AudioClip clip);
ãã ãããã®å Žåããªããžã§ã¯ããç Žæ£ãããçŽåã«ãµãŠã³ããåçãããaudio.PlayOneShotã䜿çšãããšãåé€åŸã«ãµãŠã³ãã®åçãåæ¢ããŸãã ããã¯ã圌ã®å£°ãèãããªãããšãæå³ããŸãã èªåã§ç¢ºèªã§ããŸãïŒããã䟿å©ã§ãïŒã
ããã§ãã¿ã¹ã¯ã¯å®äºããŸããã
ããŒã3.çŸåŠã
ä»ã«äœããããŸããïŒ ãããã1ã€ã®è©³çŽ°ãç§ãèŠãããŸããïŒäžåºŠã«è€æ°ã®ãã¥ãŒããæããïŒã¹ããŒã¹ããŒãæ°åé£ç¶ããŠæŒãïŒãšãã¬ããŒã圢æãã2ã€ã®ãããŒããïŒplank1ãšplank2ïŒãäºãã«å¯ŸããŠã·ãããå§ããŸãã ããšãã°ã次ã®ã¹ã¯ãªãŒã³ã·ã§ããã§èŠãããšãã§ããŸãïŒå¥ã®å æºãã·ãŒã³ã«è¿œå ãããŠããŸãïŒã

ããããç§ã¯æãç°¡åãªè§£æ±ºçãèããŸããïŒplank1ãšplank2ãæ¥ç¶ããå¿ èŠãããã®ã¯äžåºŠã ããªã®ã§ãããããã§ã«ãã®åœ¹å²ãæãããåŸã«ãããåé€ããŠã¿ãŸãããïŒ plank2ãç Žå£ããã ãã§ããïŒ glyãã
ããã§ããéå±€ããã«ã§plank1ãéžæããã€ã³ã¹ãã¯ã¿ãŒããã«ã§Fixed Jointã³ã³ããŒãã³ããèŠã€ããŸãã å¥åŠãªãã£ãŒã«ãã«æ°ä»ããŸãïŒ
ç Žå£åïŒç¡é倧
å¿ èŠãªãã®ïŒ ç§ã®å Žåãé¢ç¯ãç Žå£ããã®ã«å¿ èŠãªåã®å€ã¯10ã«ãªããŸããïŒãã¥ãŒãã³ã«æã¿ãŸãïŒã ãè¿ã¥ããããšã¯ãã¹ããŒã€ã³ã°ãã¥ãŒããã¬ããŒã®è¡šé¢ããé¢ããç¬éã«ãplank2ãplank1ããé¢ããŠé£è¡ããããšãæå³ããŸãã

å€æããããã«ããã³ãžãžã§ã€ã³ããåãåé¡ã®åœ±é¿ãåããŸã-plank1ã®å¥åŠãªåäœã¯ãå€æ°ã®èœäžãã¥ãŒãã§åã³èŠ³å¯ãããŸãã åãæ¹æ³ã§åé¡ã解決ããŸããã-Break Forceãã£ãŒã«ãã30ã«èšå®ããŸãããã®çµæãæåã®èµ·ååŸã«ã¬ããŒæ§é å šäœã厩å£ããéåžžã«ãç©ççãã«ãªããŸãã
ããã¯ãæåã®å®è¡åŸã®ã·ãŒã³ã®æ§åã§ãã

PSçŸãããé«ããããã«ãã·ãŒã³å ã®ãã¹ãŠã®ãªããžã§ã¯ãã«ææãè¿œå ã§ããŸããã¬ãã¬ããžããã¹ãŠã®ãã¥ãŒãïŒå€§å°ïŒãåºã ãããè¡ãæ¹æ³ã«ã€ããŠã¯ãèšäºã®åé ã§èª¬æããŸãã
ãããã«
ä»åã¯ããå°ãã³ãŒãããããŸããïŒäžæ¬åŒ§ãšèªåçæãããã³ãŒããé€ããŠããŸã ãã»ãã³ãã£ãã¯ãè¡ã¯10è¡æªæºã§ãïŒãã¿ã¹ã¯ã¯ããæå³ããããŸãã ç§ãã¡ãå¶åŸ¡ããç©çåŠã®äžéšã¯ããã§ã«ïŒååç©ã®åœ¢ã§ïŒçŸããŠãããã·ãŒã³ã®ç¹å®ã®ã€ãã³ãäžã«ãªã³ã«ãªãé³ã§ãã