ããã«ã¡ã¯
以åã®ã¬ãã¹ã³ã¯ã
察å¿ãããããã¯ã§èŠã€ããããšãã§ããŸã
ãããã§ãæ¬åŒ§å
ã®åæçš¿ïŒæ«å°ŸïŒã«ã¬ãã¹ã³çªå·ã衚瀺ãããŸãã çªå·ã®å
é ã®æåã¯ã»ã¯ã·ã§ã³ã瀺ããŸãïŒBåå¿è
ãI-äžçŽè
ïŒã
PSïŒåã®ã¬ãã¹ã³ãåè¬ããŠããªãå Žåã¯ãåè¬ããããšã匷ããå§ãããŸãã ãã®åŸãæã
ããããåç
§ããŸãã
åºæ¬ã¬ãã¹ã³04-ãªããžã§ã¯ãã®ç Žæ£
ãã®ã¬ãã¹ã³ã§ã¯ãDestroyã³ãã³ãã䜿çšããŠã·ãŒã³ãããªããžã§ã¯ããåé€ããæ¹æ³ã«ã€ããŠèª¬æããŸãã空ã®ã·ãŒã³ãäœæããçäœïŒ
GameObject-> Create Other-> Sphere ïŒãšãã¥ãŒãïŒ
GameObject-> Create Other-> Cube ïŒã
远å ããŸãã ãã¥ãŒãã
ãããã¯ã¹ããšåŒã³ãŸãã æ¬¡ã®å³ã«ç€ºãããã«ãªããžã§ã¯ããé
眮ããŸãã
CïŒã¹ã¯ãªããã远å ãïŒ
ãããžã§ã¯ããã¥ãŒ->äœæ-> CïŒã¹ã¯ãªãã ïŒã
Destroyerãšããååãä»ããŸãã æ¢ã«è¿°ã¹ãããã«ãCïŒã¹ã¯ãªãããäœæãããšããUnityã¯ã
StartïŒïŒããã³
UpdateïŒïŒã¡ãœããã䜿çšããŠãæ¥ç¶ãããã©ã€ãã©ãªãšã¡ã€ã³ã¯ã©ã¹ïŒã¹ã¯ãªããã§äœ¿çšïŒã§æ§æããããã¬ãŒã ã¯ãŒã¯ãäœæããŸãã
åºæ¬ã¬ãã¹ã³02ïŒå
¥åã®åºæ¬ïŒã§ã¯ã
UpdateïŒïŒã¡ãœããã䜿çšãããŸãããããã¯ããã¹ãŠã®ãã¬ãŒã ãšåŒã°ããŸãã ãã®å Žåãã·ãŒã³ãããŒãããçŽåŸã«å®è¡ããã
StartïŒïŒã¡ãœããã䜿çšããŸãã
Destroy ïŒïŒé¢æ°ã
StartïŒïŒã¡ãœããæ¬äœã«è¿œå ãã
ããã«gameObjectãæž¡ããŠãã¹ã¯ãªãããã³ã³ããŒãã³ãã§ãããªããžã§ã¯ããç Žæ£ããå¿
èŠãããããšã瀺ããŸãã
çäœã«ã¹ã¯ãªããã远å ããŸãã ãããè¡ãã«ã¯ããã€ãã®æ¹æ³ããããŸãã ã¹ã¯ãªããã
ãããžã§ã¯ããã¥ãŒãã
ã·ãŒã³ãã¥ãŒã®çäœã«ãã©ãã°ã
ãŸã ã

ãŸãã¯ã
Hierarchyã®ãªããžã§ã¯ãã®ååã

ãŸããã³ã³ããŒãã³ãã¡ãã¥ãŒïŒ
ã³ã³ããŒãã³ã->ã¹ã¯ãªãã->ãã¹ããã€ã€ãŒ ïŒããããŸãã¯éžæãããªããžã§ã¯ãã®
ã€ã³ã¹ãã¯ã¿ãŒãã¥ãŒã«ã¹ã¯ãªããããã©ãã°ããã ãã§ãçäœãéžæããŠã¹ã¯ãªããã远å ããããšãã§ããŸãã

ã¹ã³ãŒããååºŠéžæããã³ã³ããŒãã³ãéã«ã¹ã¯ãªãããååšããããšã確èªããŠãã ããã

[
åç]ãã¯ãªãã¯ãããšãã·ãŒã³ãèªã¿èŸŒãã çŽåŸã«çäœãæ¶ããããšãããããŸãã

ããã§ã¯ãå¥ã®ãªããžã§ã¯ããç Žå£ããŠã¿ãŸãããã ãããè¡ãã«ã¯ã
GameObjectã¯ã©ã¹ã®éçã¡ãœãã
Findãå¿
èŠã§ãã
StartïŒïŒã¡ãœããã®ã³ãŒããæ¬¡ã®ã³ãŒãã«çœ®ãæããŸãã
翻蚳ã®äœè
ããã®æ³šæ ïŒ2çªç®ã®ã±ãŒã¹ã§ã¯éç颿°ãåŒã³åºããŠå€ãæž¡ããããã¯ã©ã¹åïŒ
G ameObject-倧æåïŒãèšè¿°ããæåã®ã¯ã©ã¹ã§ã¯ãã®ã¯ã©ã¹ã®ãªããžã§ã¯ãïŒ
g ameObject-å°ããæåïŒã ããã§ãªãå Žåãã³ã³ãã€ã©ãŒã¯ãšã©ãŒãã¹ããŒããŸãã
error CS0176: Static member `UnityEngine.GameObject.Find(string)' cannot be accessed with an instance reference, qualify it with a type name instead
次ã®ããã«ç¿»èš³ãããŸãïŒ
ãUnityEngine.GameObject.Findã®éçã¡ã³ããŒïŒæååïŒã¯ãã€ã³ã¹ã¿ã³ã¹ïŒã¯ã©ã¹ïŒãžã®åç
§ã«ãã£ãŠã¢ã¯ã»ã¹ã§ããã代ããã«ååã§å®çŸ©ïŒåŒã³åºãïŒããŸããã
ã¹ã¯ãªããã³ãŒããžã®å€æŽãä¿åããŸãã ã¹ã¯ãªãããçäœããåé€ããŠãã¥ãŒãã«è¿œå ããå¿
èŠã¯ãããŸããã ã©ã®ãªããžã§ã¯ãã«ã¢ã¿ãããããŠããŠããã¹ã¯ãªããã¯
Boxãšããååã®ïŒã¹ããŒãžäžã®ïŒãªããžã§ã¯ããæ€çŽ¢ããŸãã
PlayãæŒããŠãçãã·ãŒã³ã«ã©ã®ããã«æ®ããç«æ¹äœãæ¶ãããã確èªããŸãã

ãªããžã§ã¯ããããã«ã§ã¯ãªãããã°ããããŠããç Žæ£ããå¿
èŠãããå Žåã¯ã©ããªããŸããïŒ ããã¯ãå€ã
Destroy颿°ã®2çªç®ã®ãã©ã¡ãŒã¿ãŒã«æž¡ãããšã§å®è¡ã§ããŸãã
[
åç]ãæŒããŠãã·ãŒã³å
šäœãèªã¿èŸŒãŸãã3ç§åŸã«ãã¥ãŒããæ¶ããããšã確èªããŸãã
å
ã®ã¬ãã¹ã³ãžã®ãªã³ã¯è¿œå è³æïŒ
å
¬åŒUnity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ã®DestroyïŒïŒé¢æ°ã®ãã«ãåºæ¬ã¬ãã¹ã³05-ãªããžã§ã¯ãäœæã®å®è£
ãã®ã¬ãã¹ã³ã§ã¯ããã¬ãããšã€ã³ã¹ã¿ã³ã¹åã³ãã³ãïŒã€ã³ã¹ã¿ã³ã¹åïŒã䜿çšããŠãã·ãŒã³å
ã«ãªããžã§ã¯ãããªã¢ã«ã¿ã€ã ïŒå®è¡æïŒã«äœæããæ¹æ³ã説æããŸããã·ãŒã³ãæ¢ã«ããŒããããŠãããšãã«ãªããžã§ã¯ããã·ãŒã³ã«è¿œå ããå Žåã¯ãã¹ã¯ãªããã䜿çšãããã
InstantiateïŒïŒã³ãã³ãã䜿çšããå¿
èŠããããŸãã
ããŒã¹ã¬ãã¹ã³03ïŒãã¬ããïŒããã·ãŒã³ãããŠã³ããŒãããããåãæ°ããã·ãŒã³ãäœæããŸãã ã·ãŒã³ã«ã¯ãã¬ãã
BouncyBoxããããŸãã

[
åç]ãã¯ãªãã¯ããŠããã¥ãŒãããŸã èœäžãããµãŒãã§ã¹ããæŒãåºãããŠããããšã確èªããŸãã
次ã«ãã·ãŒã³ãã
BouncyBoxã€ã³ã¹ã¿ã³ã¹ãåé€ããŸãã

ãã®åŸã空ã®ãªããžã§ã¯ãã远å ããŸãïŒWindowsã§ã¯
GameObject-> Create EmptyãŸãã¯
Ctrl + Shift + N ãMacOSã§ã¯
Cmd + Shift + NãæãåºããŠãã ããïŒã
BouncyBoxã€ã³ã¹ã¿ã³ã¹ããã£ãå Žæãšåãå Žæã«é
眮
ããŸã ã
CïŒã¹ã¯ãªãããäœæãã
CreaterãåŒã³åºããŸãã ã¹ã¯ãªããã®ç·šéãå§ããŸãããã
GameObjectåã®ãªãŒãã³ïŒ
ãããªã㯠ïŒå€æ°ãååŸããŠã
thePrefabãšåŒã³ãŸãããã ããšãã°ã
Inspector Viewãä»ããŠå€æ°ã®å€ãæž¡ãå Žåã¯ã
public修食åãæå®ããå¿
èŠããã
ãŸã ã ãã®åŸã
StartïŒïŒé¢æ°ã®æ¬äœã§ãå¥ã®
GameObject ïŒ
instanceãšããååïŒãäœæããéçãª
InstantiateïŒïŒé¢æ°ã䜿çšããŠå€ã§åæåããŸãã
public GameObject thePrefab; void Start () { GameObject instance = new GameObject(); instance = Instantiate(thePrefab, transform.position, transform.rotation) as GameObject; }
InstantiateïŒïŒã¡ãœããã®è©³çŽ°ãæ€èšããŠãã ããã
Instantiate(GameObject original, Vector3 position, Quaternion rotation)
ãã®ã¡ãœããã¯ãæå®ãããäœçœ®ãã¯ãã«ãšå転ã¯ã©ãŒã¿ããªã³ã§
å
ã®ãªããžã§ã¯ããè€è£œããŸãã
ã¿ã€ã
Vector3ã¯ãéåžžã®3ã³ã³ããŒãã³ããã¯ãã«ã§ãïŒ
R 3ã®ãã¯ãã«ã«äŒŒãŠããŸãïŒã
ã¯ã©ãŒã¿ããªã³ã¿ã€ãã¯ããªããžã§ã¯ãã®å転ãå®çŸ©ãã
ã¯ã©ãŒã¿ããªã³ã§ãã
ã¹ã¯ãªããã空ã®ãªããžã§ã¯ãïŒ
GameObjectãšããååïŒã«è¿œå ããŸã
ãthePrefab㯠public修食åã§å®£èšãããŠããããã
Inspectorãã¥ãŒã§åæå€ãçŽæ¥èšå®ã§ããããšãæãåºã
ãŸã ïŒå¯Ÿå¿ããã³ã³ããŒãã³ããã€ãŸããã®å Žåãããã¯
GameObjectã® Creatorã§ã ïŒã ãã¬ãããå€ã瀺ãããŠããå Žæã«ãã©ãã°ããŸãïŒãŸãã¯ãå³åŽã®åãã¯ãªãã¯ããŠãªã¹ãããéžæããŸãïŒã
PlayãæŒããŠããžã£ã³ããã¥ãŒããã·ãŒã³ã«è¡šç€ºãããŠããããšã確èªããŸãã

ãããããã¥ãŒãã«ã¯åæã®å転è§ããªããããåçŽã«äžäžã«ãžã£ã³ãããŸãã
GameObjectãéžæããããããªè§åºŠã§å転ãããŸãã
Playãã¯ãªãã¯ãããšããã¥ãŒããèœäžããããŸããŸãªè§åºŠã§åçºãããããšãããããŸãã
å
ã®ã¬ãã¹ã³ãžã®ãªã³ã¯è¿œå è³æïŒ
å
¬åŒã®Unity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ã®ã€ã³ã¹ã¿ã³ã¹åïŒïŒé¢æ°ã®èª¬æå
¬åŒUnity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ã®Transformã¯ã©ã¹ã®èª¬æåºæ¬ã¬ãã¹ã³06-ã·ã³ãã«ã¿ã€ããŒ
ãã®ã¬ãã¹ã³ã§ã¯ããŠãããã䜿çšããŠã¹ã¯ãªããã䜿çšããæ¹æ³ã«ã€ããŠèª¬æããŸã
Time.deltaTimeãšfloatåã®å€æ°ã䜿çšããŠåçŽãªã¿ã€ããŒãäœæããŸãã
åã®ã¬ãã¹ã³ã®ã·ãŒã³ã䜿çšããŸãïŒç©ºã®ã²ãŒã ãªããžã§ã¯ãã
ãã¬ããã€ã³ã¹ã¿ã³ã¹ã®çæãã€ãŸã
BouncyBox ïŒã
CïŒã¹ã¯ãªãããäœæããããã
TimerãšåŒã³ãŸãã 倿°
myTimerã远å ããæ¬¡ã®ã³ãŒããèšè¿°ããŸãã
public float myTimer = 5.0f; void Update() {
ã¹ã¯ãªãããä¿åããUnityã«åãæ¿ããŸãã
GameObjectã«ã¹ã¯ãªããã远å ã
ãŸã ã

æãåºãããŠãã ãã
myTimer㯠publicãšããŠå®£èšãããŠããããã
ã€ã³ã¹ãã¯ã¿ãŒãã¥ãŒã§åæå€ã倿Žã§ããŸãã
åçãã¯ãªãã¯ã
ãŸã ã
myTimerã®å€ããŒãã«ãªããšããã«ãã¹ããŒã¿ã¹ããŒã«
GAME OVERãšããè¡ã衚瀺ãããŸãã
myTimer倿°ã®å€ã¯ãããããç¶ããŸãïŒããã¯
Inspector Viewã§ç¢ºèªã§ã
ãŸã ïŒã
myTimer倿°
ããŒããäžåããªãããã«ããããã
UpdateïŒïŒé¢æ°ã«ãã1ã€ã®ãã©ã³ãã远å ã
ãŸãããã®çµæã次ã®ã³ãŒããååŸããŸãã
void Update () { if(myTimer > 0){ myTimer -= Time.deltaTime; }else if(myTimer <= 0){ Debug.Log("GAME OVER"); } }
[
åç]ãã¯ãªãã¯ããŠã
myTimer倿°ã®åäœãç£èŠããŸãã ãã®å€ããŒãã«ååã«è¿ã¥ããšã倿Žã忢ããŸãã
å
ã®ã¬ãã¹ã³ãžã®ãªã³ã¯è¿œå è³æïŒ
å
¬åŒUnity3dã¹ã¯ãªããã¬ã€ãã®Time.deltaTimeã«é¢ããæ
å ±åºæ¬ã¬ãã¹ã³07-ã¢ãŒã·ã§ã³ã®åºæ¬
ãã®ã¬ãã¹ã³ã§ã¯ãtransform.Translate颿°ã䜿çšããŠãªããžã§ã¯ããç§»åããæ¹æ³ã«ã€ããŠèª¬æããŸãããã¥ãŒããã«ã¡ã©ãå
æºã§ã·ãŒã³ãäœæããŸãã

æ°ãã
CïŒã¹ã¯ãªãããäœæããããã
MoveãšåŒã³ãŸãã
ç§»åã¯æéçã«é£ç¶ããŠããå¿
èŠããããããã¡ã€ã³ã³ãŒãã¯
UpdateïŒïŒã¡ãœããã«é
眮ãã
ãŸã ã
倿ãªããžã§ã¯ãã®
Translate颿°ãåŒã³åºãã
Vector3ïŒ0ã0ã1ïŒããã©ã¡ãŒã¿ãŒãšããŠæž¡ããŸãã æ¬¡ã®ã³ãŒããååŸããŸãã
void Update () { transform.Translate(new Vector3(0.0f, 0.0f, 1.0f));
ã³ãŒãã§ããã«è©³ãã調ã¹ãŸãã ããã§ã
transformã¯ããªããžã§ã¯ãã«ã¢ã¿ããããã
Transformã¯ã©ã¹ã®ãªããžã§ã¯ãã§ãã
TranslateïŒïŒã¡ãœããã¯ããªããžã§ã¯ãããã®é·ãã«çããè·é¢ã ããã¯ãã«ã«æ²¿ã£ãŠç§»åããŸãïŒäžŠå転éïŒã
ã¹ã¯ãªãããä¿åãããã¥ãŒãã«è¿œå ããŸãã [
åç]ãã¯ãªãã¯ããŠããã¥ãŒãã
Ozè»žã«æ²¿ã£ãŠã©ã®ããã«é£ãã§ãããã確èªããŸãã

ããšãã°ããã¯ãã«ã«
Time.deltaTimeãæããŠãç§»åé床ãäžããŸãããã
transform.Translate(new Vector3(0.0f, 0.0f, 1.0f) * Time.deltaTime);
[
åç]ãã¯ãªãã¯ãããã¥ãŒãã®åããèããé
ããªãããšã確èªããŸãã
é床ãåºå®ãã¯ãã«ã§ã¯ãªã倿°ã«ãã£ãŠèšå®ãããŠããå Žåãã¹ã¯ãªããããã䟿å©ã«äœ¿çšã§ããŸãã
floatåã®
ãããªãã¯å€æ°ãååŸããŠã
speedãšåŒã³ãŸãããã ãã®å€æ°ã䜿çšãããšã
ã€ã³ã¹ãã¯ã¿ãŒãã¥ãŒã§åæé床ãèšå®ã§ã
ãŸã ïŒããã©ã«ãã§ã¯
5.0fã«çãããªã
ãŸã ïŒã
public float speed = 5.0f; void Update () { transform.Translate(new Vector3(0.0f, 0.0f, speed) * Time.deltaTime); }
ã¹ã¯ãªãããä¿åããŠã
Inspector Viewã® Moveã³ã³ããŒãã³ãã«
Speed倿°ã
衚瀺ãããŠããããšã確èªããŸãããã

ãã®å€æ°ã®æå®ãããåæå€ã«åŸã£ãŠãªããžã§ã¯ãã®é床ãã©ã®ããã«å€åãããã確èªããŠãã ããã ããšãã°ã
Speed = 3ã®å Žå ããªããžã§ã¯ã
ã®é床ã¯ããã»ã©éããããŸããããé
ãããããŸããã
泚 ïŒåŒ
Vector3ïŒ0.0fã0.0fã1.0fïŒã«ã¯ãçãïŒãã ããæããã«é
ãå ŽåããããŸãããæ£ãããªãå Žåã¯ä¿®æ£ããŠãã ããïŒãšã³ããª
Vector3.forwardããããŸãã
ã©ãããŒããã®ã³ãŒãã®äžéšïŒ
public static Vector3 forward { get { return new Vector3(0.0f, 0.0f, 1.0f); } }
å
ã®ã¬ãã¹ã³ãžã®ãªã³ã¯è¿œå è³æïŒ
å
¬åŒã®Unity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ããã®transform.Translateã¡ãœããã«é¢ããæ
å ±å
¬åŒã®Unity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ããã®Time.deltaTimeæ
å ±åºæ¬ã¬ãã¹ã³08-çåéåã®åºæ¬ã
ãã®ã¬ãã¹ã³ã§ã¯ãåã®é©çšã䜿çšããŠèäœïŒåäœïŒãç§»åããæ¹æ³ã«ã€ããŠèª¬æããŸããã¹ããŒãžäžã«
Rigidbodyã³ã³ããŒãã³ããæã€ãªããžã§ã¯ããããå Žåããã©ãŒã¹ã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠãªããžã§ã¯ãã®ã¢ãŒã·ã§ã³ãèšå®ããå¿
èŠããããŸãïŒãããã£ãŠããã¹ãŠã®ã¢ãŒã·ã§ã³èšç®ã
ç©ççãªã²ãŒã ãšã³ãžã³ã«è»¢éããŸãïŒã ããããªããšããªããžã§ã¯ãã®ç©çãšç«¶åããå¯èœæ§ããããŸãã
ããŒã¹ã¬ãã¹ã³03ã®ã·ãŒã³ãåŒãç¶ã䜿çšããŠããŸãã
CïŒã¹ã¯ãªãããäœæããããã
ForceãšåŒã³ãŸãã
StartïŒïŒã¡ãœããã§ã
rigidbodyã³ã³ããŒãã³ãïŒãªããžã§ã¯ãã«é¢é£ä»ããããŠãã
ïŒã®
AddForceïŒïŒã¡ãœãããåŒã³åºãã
Vector3ã«é©çšãããå
ãã¯ãã«ïŒ0.0fã0.0fãpowerïŒãæž¡ããŸãã ã¯ã©ã¹ã§ã¯ãååãpowerã§ããã©ã«ãå€ã
500.0fã® floatåã®å€æ°ãäœæããŸãã
public float power = 500.0f; void Start () { rigidbody.AddForce(new Vector3(0.0f, 0.0f, power)); }
ã¹ã¯ãªãããä¿åãããªããžã§ã¯ãïŒãŸãã¯ãã¬ããïŒã«è¿œå ããŸãã ããã§ã[
åç ]ãã¯ãªãã¯ãããšã
Ozè»žã«æ²¿ã£ãŠé©çšãããåã®åœ±é¿ã«ãããç«æ¹äœãã©ã®ããã«åããã«æãã«ãªãããããããŸãã
å
ã®ã¬ãã¹ã³ãžã®ãªã³ã¯è¿œå è³æïŒ
å
¬åŒã®Unity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ããã®åäœã¯ã©ã¹æ
å ±å
¬åŒã®Unity3dã¹ã¯ãªãããªãã¡ã¬ã³ã¹ããã®AddForceã¡ãœããã«é¢ããæ
å ±PSïŒçŽ æµã§å®ãå€ã鱿«ã