ã¯ããã«
ã¬ãã³ã°ã¹ã§Amigaããã¬ã€ããŠããã®ã¯åäŸã®é ã®ç§ã ãã§ã¯ãªãã£ããšæããŸãã æ°å幎ãéããç§ã¯ãšãããã²ãŒã éçºè ã Unityãã¥ãŒããªã¢ã«ã§ãã¹ããããYouTubeãã£ã³ãã«ã«ãªããŸããã
ããæ©ãç§ã¯Game Maker 2ã®å©ããåããŠã¬ãã³ã°ã¹ãåçŸããããšã«ã€ããŠã ãã€ã¯ãã€ãªãŒã®ããã2ã€ã®ãããªïŒ ããŒã1 ã ããŒã2 ïŒã«åºäŒããŸããããã¹ã¿ã«ãžã¢ã¯ç§ã«çãäžãããããã§äœããããããšã«ããŸããã ããã§ãç§ã¯èªåã®ãªãœãŒã¹ã䜿ã£ãŠUnityã§èªåã®ããŒãžã§ã³ãäœæãå§ããŸããïŒæçœãªçç±ã®ããïŒã
ãã®èšäºã§ã¯ãèªåã®äœæ¥ããã»ã¹ã«ã€ããŠèª¬æããŸãã ãã ããç°¡æœã«ããããã«ãæãéèŠãªåŽé¢ã®ã¿ãæ€èšããŸãã ããã§ååã§ã¯ãªããšæãããå Žåã¯ã ããã§å®å šãªéçºããã»ã¹ã説æãããããªã1è¡ãã€èŠãããšãã§ããŸãã
ããã«ã ããã§ã¯WebGLã§ãããžã§ã¯ããåçã§ããŸãã èãããããã°ã
ãããžã§ã¯ãã®è€éãã¯ãã¬ãã³ã°ã¹ã®æèŠãšã¡ã«ããºã ãåçŸããããšã§ããã å€ãã®ãã£ã©ã¯ã¿ãŒã®ã¬ãã«ã移åãããšãã«ããã¯ã»ã«ããŒãã§ã¯ãã³ãªãžã§ã³ãæäŸããããšãå«ã¿ãŸããããã¯ãã¹ãã«ã«ãã£ãŠç°ãªããŸãã
å°å³äœæ
æåãããã¬ãã«ã¯ç·šéå¯èœãªã°ãªããã§ãªããã°ãªããªãããšã¯æããã§ããã åé¡ã¯ãé«ãã²ãŒã é床ãç¶æããªãããåã ã®ããŒãã§ãã®ã°ãªãããã¬ã³ããªã³ã°ããããšã§ããã
åŸã ã«ãã¬ãã«å šäœã«1ã€ã®ãã¯ã¹ãã£ã䜿çšããããšã«ããŸãããåãã¯ã»ã«ã¯1ã€ã®ããŒãã«ãªããããŒããžã®å€æŽã¯ãã¯ã¹ãã£èªäœã®å€æŽã«ãªããŸãã
ãããè¡ãã«ã¯ããã£ã¹ã¯ãããã¯ã¹ãã£ãå€æŽãããšãã«ãUnityãã€ã³ã¹ã¿ã³ã¹ã§ã¯ãªããã¯ã¹ãã£èªäœãå€æŽããããšãç¥ãå¿ èŠããããŸãã ãããã£ãŠããã®ã€ã³ã¹ã¿ã³ã¹ãæåã§äœæããå¿ èŠããããŸãã ããã¯ã次ã®ã³ãŒãã䜿çšãããšéåžžã«ç°¡åã§ãã
textureInstance = Instantiate(levelTexture) as Texture2D;
ãã ãããã¯ã¹ãã£ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããã ãã§ãªãããã¯ã¹ãã£ããåãåã£ãè²æ å ±ã«åºã¥ããŠããŒããèšå®ããå¿ èŠããããŸãã ãããã£ãŠãå°ããªNodeã¯ã©ã¹ãäœæããŸãã
public class Node { public int x; public int y; public bool isEmpty; }
åŸã§ãã®ã¯ã©ã¹ã«ããå°ãæ å ±ãä¿åã§ããããã«ãªããŸãããä»ã®ãšããããã§ååã§ãã ããã§ã次ã®ã«ãŒãã䜿çšããŠããã®ã¯ã©ã¹ããã°ãªãããäœæã§ããŸãã
//maxX - , Texture2D //maxY - for (int x = 0; x < maxX; x++) { for (int y = 0; y < maxY; y++) { // Node n = new Node(); nx = x; ny = y; // // Color c = levelTexture.GetPixel(x, y); // textureInstance.SetPixel(x, y, c); // ; , 0 -. , . n.isEmpty = (ca == 0); // , . Color mC = minimapColor; if (n.isEmpty) mC.a = 0; miniMapInstance.SetPixel(x, y, mC); // grid[x, y] = n; } } // for .Apply() textureInstance.Apply(); miniMapInstance.Apply();
泚ïŒããã§è¡ãããã«ãåã€ã³ã¹ã¿ã³ã¹ãã¯ã¹ãã£ã«ãã¯ã»ã«ãèšå®ããå¿ èŠã¯ãããŸãããã«ãŒããæ©èœããåã«ã€ã³ã¹ã¿ã³ã¹ãäœæããããšãã§ããŸããããã®ææ³ã䜿çšããŠãã¯ã»ã«ã«åœ±é¿ãäžããéåžžãšã¯ç°ãªãè²ãäžããããšãã§ããŸãã ããšãã°ãäžéæãã¯ã»ã«ã®å Žåãéåžžã®è²ãç·ã«çœ®ãæããããšãã§ããŸãã ãã®æ¹æ³ã§ããããããäœæã§ããŸãã
泚ïŒäžèšã® forã«ãŒãã¯1åã ãå®è¡ããå¿ èŠããããŸãã ãããã£ãŠã倧ããªãã¯ã¹ãã£ïŒãµã€ãº1000x200ã®ãã¯ã¹ãã£ã䜿çšïŒã§ãã£ãŠããéå°ãªãªãœãŒã¹æ¶è²»ã¯ããŒãæã«ã®ã¿çºçããŸãã ãã®åŸãããããå€æŽããããã«ãããŒãã«ä¿åãããŠããã¢ãã¬ã¹ã䜿çšããŸãã
ããã§ãã¯ã¹ãã£ãã§ããã®ã§ãã¬ã³ããªã³ã°ããå¿ èŠããããŸãã GameObjectã«SpriteRendererïŒlevelRendererãšããŠä»¥äžã®ã³ãŒãã«ä¿åïŒãè¿œå ããTexture2Dãã¹ãã©ã€ãã«å€æããŠå²ãåœãŠãŸãã ããã¯ã次ã®è¡ã䜿çšããŠå®è¡ã§ããŸãã
Rect rect = new Rect(0, 0, maxX, maxY); levelRenderer.sprite = Sprite.Create(textureInstance, rect, Vector2.zero,100,0, SpriteMeshType.FullRect);
ãããããã§ãåãããšãã§ããŸãããSprite Rendererã®ä»£ããã«Image UIã³ã³ããŒãã³ãã䜿çšããŸããã
Vector2.zeroã¯äžå¿ç¹ãå·Šäžé ã®äœçœ®0,0ã§ãã ãã®é£ã®å€100ã¯ããã¯ã»ã«ãšãã€ã³ãã®æ¯çã§ããããã©ã«ãã§ã¯ãUnityã§ã¯100ãã¯ã»ã«ããã1ãã€ã³ãã§ãã ãŸããã¯ãŒã«ã座æšã䜿çšããŠèšç®ãå®è¡ããå Žåãããšãã°ãããŒãnodeïŒ5,6ïŒã®ã¯ãŒã«ãå ã®äœçœ®ãèŠã€ããããã«ãxãšyã«æ¯çãã€ãŸã ïŒx *ïŒ1/100ïŒïŒã ãŸãã¯ãã€ã³ããŒãèšå®ã§ãã¹ãŠã®ã¹ãã©ã€ãã«å¯ŸããŠ1ïŒ1 /ã®æ¯çãèšå®ã§ããŸã
æåŸã«ãã¹ãã©ã€ãã¡ãã·ã¥ã®ã¿ã€ããFullRectã§ããããšãéèŠã§ãã ãã以å€ã®å ŽåãUnityã¯ã¹ãã©ã€ããæé©åããäžéæãªãã¯ã»ã«ã®ã島ããäœæããŸãã ããããããã¯ã»ã«ãåé€ããå Žåãããã¯åé¡ã«ãªããŸãããã空ã®é åã«ãã¯ã»ã«ãè¿œå ããå¿ èŠããããŸãã ã¿ã€ããFullRectã«èšå®ããããšã§ãUnityã«å ã®ç»åã®ãµã€ãºã®é·æ¹åœ¢å šäœãšããŠã¹ãã©ã€ããä¿åãããŸãã
äžã®å³ã¯ãã¹ãã©ã€ãã®ã¿ã€ããFullRectã§ã¯ãªãå Žåã«çºçããåé¡ã瀺ããŠããŸãã
äžèšã®ãã¹ãŠã®ãããã§ããã¯ã¹ãã£ãããããšããŠåäœæããæ¹æ³ãåŠã³ãŸããã
ãŠããããšãã¹ãã¡ã€ã³ããŒ
ãã®ããŒãã§ã¯ãUnityå ã®ãŠãããã®ã¢ãã¡ãŒã·ã§ã³ãäœæããããã»ã¹ãã¹ãããããŸãããäœææ¹æ³ãããããªãå Žåã¯ããã®ããã»ã¹ããããªã§å ¬éããŸãã
ããã§ã¯ããã¯ã»ã«å®ç§ãªè¡çªãã©ã®ããã«å®è£ ããŸããïŒ
空ã®ããŒããšå°çã®ããŒããã°ãªããã®ã©ãã«ãããã¯ãã§ã«ããã£ãŠããŸãã ã©ã®ããŒããæ©ãããšãã§ãããã決ããŸãããã ã²ãŒã ã®ãã«ãŒã«ãã¯æ¬¡ã®ããã«ãªããŸããçµã³ç®ãå°çã§ããã®äžã®çµã³ç®ã空æ°ã§ããå Žåãäžçªäžã®çµã³ç®ã¯ããªããè¡ãããšãã§ããçµã³ç®ã§ãã ãã®çµæã1ã€ã®ç©ºã®ããŒãããå¥ã®ç©ºã®ããŒããŸã§æ©ãããšãã§ããŸãããåå°ã®ãªãããŒãã«å°éãããšèœäžããŸãã ãããã£ãŠãåãŠãããã®ãã¹æ€çŽ¢ã®äœæã¯ãæ¯èŒçç°¡åãªããã»ã¹ã§ãã
ãããã®æé ãæ£ããé åºã§å®è¡ããã ãã§ãã
- çŸåšã®ããŒããnullãã©ããã確èªããŸãã ãããæ¬åœãªããããããå°å³ããèœã¡ãŸããã
- curNodeãåºåããŒãã§ãããã©ããã確èªããããã§ããã°ããŠãããã¯ã¬ãã«ãé¢ããŸããïŒããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãïŒã
- äžã®ããŒãã空ãã©ããã確èªããŸãã ããã¯ãç§ãã¡ã空äžã«ããããšãæå³ããŸãã 4ãã¬ãŒã 以äžèœäžããå ŽåïŒç§»åããŠããæåŸã®4ã€ã®ããŒãã空ã ã£ãå ŽåïŒãèœäžã¢ãã¡ãŒã·ã§ã³ã«åãæ¿ããŸãã ãã®ãããã§ãåãäžã£ãŠããã¢ãã¡ãŒã·ã§ã³ã¯å€ãããŸããã
- ç§ãã¡ã®äžã«å°çãããå Žåãç§ãã¡ã¯æ¥œãã¿ã«ããå¿ èŠããããŸãã 空ã®ããŒããããå Žåãããã«ç§»åããããšã楜ãã¿ã«ããŠããŸãã
- åã®ããŒãã空ã§ãªãå Žåã空ã®ããŒããèŠã€ãããŸã§4ã€ã®ããŒãã®æ€çŽ¢ãéå§ããŸãã
- 空ã®ããŒããèŠã€ãããªãã£ãå Žåã¯ãåã«å察æ¹åã«å転ããŠé²ã¿ãŸãã
ã芧ã®ãšããããã®ãã¹æ€çŽ¢ã¯éåžžã«åæ©çãªãã®ã§ãããã¬ãã³ã°ã¹ã®ãããªã²ãŒã ã§ã¯ååãããã»ã©ã§ãã
ãã¹ãæ€çŽ¢ãããšãã«èæ ®ããå¿ èŠãããä»ã®åŽé¢ããããŸããããšãã°ãèœäžæã«äœ¿çšãããã¢ã³ãã¬ã©èœåããéåžžã«æ·±ãæãäžãã£ãŠåå°ãååšããªããšãã«æãèœåãªã©ã§ãã
ããããã¹ã®æ€çŽ¢å šäœã§ãã ãŠãããã移åããã«ã¯ããããã¯ã»ã«ããå¥ã®ãã¯ã»ã«ã«è£éããå¿ èŠããããŸãã ãŸãã¯ãæå®ããééã§ç¹å®ã®æ°ã®ãã€ã³ããå€æäœçœ®ã«è¿œå ã§ããŸãããè£éã䜿çšããŠ2ã€ã®åé¡ã解決ããŸãã ãŠãããããã¯ã»ã«ã«å°éãããšãã«ã®ã¿ãã¹æ€çŽ¢ã䜿çšããããããã¬ãŒã ããšã«å®è¡ãããªãããã«ã䜿çšãããã¹æ€çŽ¢æäœã®æ°ãå¶éããŸãã ããã¯åçŽãªæäœã§ãããšããäºå®ã«ããããããããã®æ¹æ³ã§ã¯ã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ãå€§å¹ ã«ç¯çŽã§ãããããããã¬ãã«ã§åæã«ç§»åã§ãããŠãããã®æ°ãå¢ããããšãã§ããŸãã
ãã¹ãŠã®ãŠãããã¯ãUpdateïŒïŒãæåã§å®è¡ããåçŽãªãã£ã¹ãããã£ã«ãã£ãŠå¶åŸ¡ãããŸãã Lemmingsã«ã¯ãå éããã¿ã³ããã£ããããåäœæããã«ã¯timeScaleæéãã·ãã¥ã¬ãŒãããå¿ èŠããããŸãïŒå éãããå Žåãå€ã¯2ãŸãã¯3ã«ãªããŸãïŒãããã¯ã¹ã±ãŒãªã³ã°ãããæéãã«ã¿ãšå ±ã«ãŠãããã«éä¿¡ãããŸãã ãŠãããã¯ïŒTime.deltaTimeã®ä»£ããã«ïŒã¹ã±ãŒãªã³ã°ãããdeltaTimeã䜿çšããŠäœçœ®éãè£éããtimeScaleã䜿çšããŠAnimatorã®é床ãå€æŽããŸãã ãããã£ãŠãUnityã®æéã¹ã±ãŒã«ã¯éåžžã®é床ã®ãŸãŸã§ãããã²ãŒã ã¯ãé«éã¢ãŒããã«ãããšããå°è±¡ã§ãã
ã¬ãã«å€æŽ
ãããŠããããã楜ãã¿ãå§ãŸããŸãã ã¬ãã«ã¯ãããŸãããã¬ãã³ã°ã¹ã®ã²ãŒã ãã¬ã€ã®äž»ãªéšåã¯ãã¬ãã«ãšã®åçãªçžäºäœçšã§ããã
ã€ãŸãããã¯ã»ã«ãè¿œå ãŸãã¯åé€ããæ¹æ³ãåŠã¶å¿ èŠããããŸãã ã©ã¡ãã®å Žåãã次ã®ã³ãŒãã䜿çšããŸãã
textureInstance.SetPixel(x,y,c);
c =è²ã ãã¯ã»ã«ã®è¿œå ãšåé€ã®å¯äžã®éãã¯ãã¢ã«ãã¡ãã£ã³ãã«å€ã§ââãã å¿ããªãã§ãã ããã ã¢ã«ãã¡å€ã0ã®å ŽåãããŒãã¯ç©ºãšèŠãªãããŸãã
ãã ããäžèšããæãåºãããã«ã.SetPixelïŒïŒã䜿çšããå Žåã¯ããã¯ã¹ãã£ã§.ApplyïŒïŒãåŒã³åºããŠå®éã«æŽæ°ããå¿ èŠããããŸãã ãã¬ãŒã ããšã«è€æ°ã®ãã¯ã»ã«ãå€æŽã§ããããããã¯ã»ã«ãå€æŽãããã³ã«ãããè¡ãå¿ èŠã¯ãããŸããã ãããã£ãŠããã¬ãŒã ã®æåŸãŸã§.ApplyïŒïŒã䜿çšããããšã¯é¿ããŸãã ãããã£ãŠãUpdateïŒïŒã«ãŒãã®æåŸã«ãåçŽãªããŒã«å€ããããŸãã trueã®å ŽåãtextureInstanceãšãããããã®äž¡æ¹ã§ã.ApplyïŒïŒãå®è¡ãããŸãïŒ
if(applyTexture) { applyTexture = false; textureInstance.Apply(); miniMapInstance.Apply(); }
èœå
ãã®ã·ã¹ãã ãäœæããåŸã¯ãã©ã®ãã¯ã»ã«ã«åœ±é¿ãäžããŠããããã©ã®çšåºŠæ£ç¢ºããå€æããå¿ èŠããããŸãã ãã®èšäºã§ã¯ãã€ãã³ãã®é«ã¬ãã«ã®ããžãã¯ã®ã¿ãæ€èšããŸããããããªã®ã³ãŒããèŠãããšãã§ããŸãã 以äžãããã¯ã»ã«ããããã©ããããšèšããšãã¯ãããŒãã空ã§ããããšãæå³ããŸãããããããèœã¡ãŠããªããã°ãåžžã«ã©ãã«ã§ããã¯ã»ã«ãããããã§ãã
- æ©ã
- ããã¯åºæ¬çãªèœåã§ãã å ã«é²ããšãèå³æ·±ããã®ã¯äœããããŸããã
- ãããŠ
- ãããŠïŒ ãŠããããå察åŽã«ãªãã€ã¬ã¯ãããŸãã
- å
- ãŠããããéåžžã«é«ãäœçœ®ããèœäžãããšã圌ã¯æ»ã«ãŸãããã¡ã¢ãªãŒããã³ãºã®ããã«ããã®èœåã§ã¹ã ãŒãºã«éäžããŸãã ãã®æ©èœã¯éåžžã«ç°¡åã«æ©èœããã¢ã¯ãã£ããã£ããã§ãã¯ããã ãã§ãã ããã«ããã¯ã»ã«éã®è£éã®ãã©ãŒã«ã¬ãŒããå€æŽããŠããªã©ãã¯ã¹ãããã©ãŒã«ãšãã§ã¯ããäœæããŸãã
- æãé²ã
- å ã®ã²ãŒã ã§ã¯ãããã¯ãBasherããšåŒã°ããŠããŸãã-ãŠãããã¯åã«åæ¹ã«ãã³ãã«ãæããŸããã ããžãã¯ã®èŠ³ç¹ããããã¹ã®æ€çŽ¢ãåå®çŸ©ããŸãïŒåã«å°ãªããšã1ã€ã®ãã¯ã»ã«ãããå ŽåããŠãããã¯ç¹å®ã®æ°ã®ãã¯ã»ã«ãæãç¶ãã次ã«åãã¯ã»ã«ãäžã«8ãã¯ã»ã«ãåããããããåé€ãããããã«éä¿¡ããŸãã ãã£ã©ã¯ã¿ãŒã®æé·ã«ããã8ãã¯ã»ã«ã®ãµã€ãºãéžæãããŠããŸãã
- æãäžãã
- æãé²ãã§ããããã«èŠããŸãã ãã®æ©èœã¯ãåãšäžã«ãã¯ã»ã«ãååŸãã代ããã«ããŠãããã®äžã«2ã3ãã¯ã»ã«ãåã«2ã3ãã¯ã»ã«ããããŠãã¡ãã1è¡äžããååŸããŸãã
- ãã©ã¹ã
- ããã¯åçŽãªèªæ®ºãŠãããã§ããããã ççºãããã®å Žæã«ç©Žãæ®ããŸãã åé€ããããã¯ã»ã«ã¯ããã®äœçœ®ãäžå¿ãšããæå®ã®ååŸã«ãããŸãã
- 建èšæ¥
- å¥ã®å€å žçãªèœå-ãŠãããã¯ãèŠãŠãããã€ã³ãããæãäžã«äžé£ã®ãã¯ã»ã«ãæ§ç¯ããŸãã ããã¯ãåé¢ãšäžéšã§4ã5ãã¯ã»ã«ãååŸããããã«ãè¿œå ãã«è»¢éããããšã§å®çŸãããŸãã ãŸããããŒãã®ããããã£ã«ã圱é¿ããŸãïŒããŒãã空ããå¡ãã€ã¶ãã«å€æŽããŸãïŒã ãã®åŸãæ©èœã¯æ¬¡ã®å¯Ÿè§äœçœ®ã«è£éããå£ã«è¡çªãããã建ç©ã«å²ãåœãŠããããã¯ã»ã«æ°ãçµãããŸã§æäœãç¹°ãè¿ããŸãã
- å
å¡«
- 次ã®ã»ã¯ã·ã§ã³ã«ã¹ã ãŒãºã«ç§»åã§ããå¥ã®æ¥œããæ©èœã ã¬ãã³ã°ã¹2ã§æåã«ç»å ŽããŸãããã液äœãã®ç¹æ§ãæã€ãç ãã®ãã¯ã»ã«ãæãããŠãããã§ããéæ¢ç¹ã«éãããŸã§ãåžžã«äœäžããŸãã ãããã«ã€ããŠã¯åŸã§è©³ããæ€èšããŸãã
æããã«ãã¬ãã³ã°ã¹ã·ãªãŒãºã®ã²ãŒã ã«ã¯ä»ã«ãå€ãã®èœåããããŸãããïŒãã¹ãŠããã¹ãããŠããããã§ã¯ãããŸãããïŒäžèšã®ãã¹ãŠã®çµã¿åããã§ãããšæããŸãã ããšãã°ããã€ããŒã¯ããã·ã£ãŒã®ããªãšãŒã·ã§ã³ã§ãããåã«é²ãã®ã§ã¯ãªããåã«åãã£ãŠæãäžããŸãã
ã¡ã¢ãªãŒã»ããã³ãºã®ããã«ã¹ã ãŒãºã«éãã
ããã€ãã®èœåã®äœ¿çšäŸ
ã液äœã
ãŸãã¯ãããããåŒã³åºããšãã«ãããŒããåããŸãã ããã¯å¥ã®æ¥œããè¿œå æ©èœã§ãã é«ã¬ãã«ã®ããžãã¯ã¯æ¬¡ã®ãšããã§ãããããã¯ç¬èªã®ããã¹æ€çŽ¢ããæã€åçããŒãã§ãã ãããããã¹ãŠãŸãšããŠãæ»ãããªå¹æãåŸãŸãã ãããªã«ç€ºãããã«ãéªãéãå¹æãäœæããããšãã§ããŸãã
ä»çµã¿ã¯æ¬¡ã®ãšããã§ãã次ã®ã¯ã©ã¹ããããŸãã
public class FillNode { public int x; public int y; public int t; }
xãšyã¯ããæ³åã®ãšãããããŒãã¢ãã¬ã¹ã§ãã tã¯ããã£ã«ããŒãããããããšã³ãäœçœ®ãã«ãã£ãåæ°ã§ãã æ°å€ãè©ŠããŠã¿ãããšã¯ã§ããŸãããç§ã«ãšã£ãŠã¯ã圌ã15åãããšãããŒãã¯åæ¢ãããšèŠãªãããå å¡«ããŒãããéåžžããŒãã«å€ãããŸãã
ãã£ã«ããŒãã¯æ¯ãã¬ãŒã æŽæ°ãããŸããã1ç§ããã60åäœçœ®ãå€æŽããå¿ èŠãããããã移åãéãããå¯èœæ§ãããããã§ãã ç§ãã¡ã¯ãããã«ã®ã¿äœçšãããŠãããŒãµã«ã¿ã€ããŒã䜿çšããŸãã å人çã«ã¯ã0.05ç§ããšã«æŽæ°ã䜿çšããŸããããããŸããŸãªæµåçãªå¹æãåŸãããã«ãããå®éšããããšãã§ããŸãã
ãããã£ãŠãããããæŽæ°ããããšãããã¹æ€çŽ¢ãã¯æ¬¡ã®ããã«ãªããŸãã
- ããŒããããŒãã®äžã«ååšãããã©ããã確èªããååšããªãå Žåããã®å¡ãã€ã¶ãããŒãã¯ãããã®å€ã«èœã¡ãŸããã
- ååšããå Žåã¯ã空ãã©ããã確èªããŸãã 空ã®å Žåã¯ãçŸåšã®ãã¯ã»ã«ãã¯ãªã¢ããŠãäžã®ãã¯ã»ã«ïŒããŒãïŒã«è¿œå ããŸãã ãããã£ãŠãæã ã¯äžã«ç§»åãç¶ããŸãã
- ãã ãã空ã§ãªãå Žåã¯ããã¯ã»ã«ãåæ¹ããã³äžæ¹ã«ç¢ºèªããŸãã 空ã®å Žåã¯ãããã«ç§»åããŸãã
- ãã©ã¯ãŒãããŠã³ããã£ã±ãã®å Žåãããã¯ããŠã³ã«ç§»åããŸãã
- 移åããå Žæããªãå Žæã«ããå Žåãå å¡«ããŒããtã«è¿œå ããŸãã
- tãèšå®ããå€ããã倧ããå Žåãå¡ãã€ã¶ãããŒããåé€ãããã¯ã»ã«ããã£ã±ãã®ãŸãŸã«ããŸãã
tã¯3ã€ã®åŽé¢ãæ åœããŸãã ãŸãã移åããŠããªãããŒããåé€ããããšã«ããã倧éã®å å¡«ããŒãã®ãªã¹ãããªãããã«ããŸãã 第äºã«ãèœäžæã«ããŒããäºãã«ãã£ã€ããªãããã«ããããšãã§ããŸãã 第äžã«ãããŒããè¡ãè©°ãŸãã«ãããããŸã åæ¢ããŠãããšèŠãªãããŠããªãå Žåããã®äžã§ãŠããããæããšã次ã®æŽæ°äžã«ãã£ã«ããŒããèœäžããçŸãããã€ãããã¯ãªå¹æãçã¿åºããŸãã
äžèšã®ãã¹ãŠãèãããšããæµââäœãã®åœ±é¿ãé床ã«å€§ãã圱é¿ãããšèãããããããŸãããããã®å Žåã¯ããã§ã¯ãããŸããã ãããªã«ç€ºãããã«ãå€æ°ïŒ10,000ãè¶ ãããã£ã«ããŒãïŒã§ãã¹ãããŸããã 10,000ã®ãã¹ãŠãåæã«ãçããŠããããšããå¯èœæ§ã¯ãããŸããã§ããããããã¯ä»¥äžã«ç€ºãããã«éåžžã«çŸããå¹æãçã¿åºããŸããã
ãã®è¿œå ã·ã¹ãã ã§éãã§ãã ããã ããã¬ãŒã¹ãã«ããŒãæ©èœã«å¿ èŠãªã®ã¯ã¹ããŒã³äœçœ®ã®ã¿ã§ãããã®åŸãè€æ°ã®å å¡«ããŒããäœæãããç¬ç«ããŠç§»åã§ããããã«ãªããŸãã
ã¬ãã«ãšãã£ã¿ãŒ
åºæ¬çã«ã¯ãã¯ã»ã«ã®è²ãå€æŽããã ãã ã£ãã®ã§ããããããããªãã§ã¯å®è¡ã§ããªããšæšæž¬ããã§ãããã ãããã£ãŠã次ã®è«çã¹ãããã¯ãã¬ãã«ãšãã£ã¿ãŒãäœæããããšã§ããããã¯ããã¡ãããã¯ã»ã«æç»ã«ãªããŸãã ãã®ãšãã£ã¿ãŒã¯äžèšãšåãæ©èœã®ã¿ã䜿çšããŸããããŠãããã§ã¯ãªãããŠã¹ã®äœçœ®ã«çŠç¹ãåœãŠãŠããããããã®ãšãã£ã¿ãŒã®åæãæ·±ããã䟡å€ã¯ãªããšæããŸãã ãã¡ãããã³ãŒãå šäœãèŠããå Žåã¯ããããªãèŠãããšãã§ããŸãã
ããããã·ãªã¢ã«åã«ã€ããŠãã£ãšè©±ãããã®ã§...
é£èŒ
ãããªã§ç€ºããããã«ããããå®è£ ããã«ã¯ããã€ãã®æ¹æ³ããããŸãã ã¬ãã«ãäœæããããã«ãšãã£ã¿ãŒã䜿çšããå¿ èŠãããããŸããã ãã£ã¹ã¯ãã.pngã«ç»åãããŒãããŠãã¬ãã«ãšããŠäœ¿çšããããšãã§ããŸãã ç§ãã¡ããã§ã«äœæããã·ã¹ãã ã¯ã倧ããªãã£ã³ã¹ãéããŸãã ãã ãããã¯ã¹ãã£ããã²ãŒã ãäœæããå¿ èŠããããããã¹ããŒã³äœçœ®ãšçµäºäœçœ®ãç¶æããå¿ èŠããããŸãïŒãããã2ã€ã®ã€ãã³ããšåŒã³ãŸãããïŒã ãªãªãžãã«ã®ã¬ãã³ã°ã¹ã®ç¶ç·šã«ã¯ãã®ãããªã€ãã³ããããã€ããããŸããããããããã«çŠç¹ãåœãŠãŸããããè«çã®åºæ¬ã¯åãã§ãã
ãã¡ããããããã®ã€ãã³ããå®è£ ããæ¹æ³ã¯å€æ°ãããŸããããšãã°ãã¬ãã«ããšã«2ã€ã®ãã¯ã¹ãã£ãäœæãã1ã€ã¯ã¬ãã«èªäœã䜿çšãã2ã€ç®ã¯è²åããããã€ãã³ãã䜿çšããŸããããã®å Žåããã¬ãŒã€ãŒã¯ãµãŒãããŒãã£ã®ãšãã£ã¿ãŒã§ã¬ãã«ã€ãã³ããå€æŽã§ããŸãã ããã¯å¿ ãããæªãããã§ã¯ãããŸãããããã£ã³ããŒã³ã¬ãã«ãããå Žåãªã©ãæãŸãããªãå ŽåããããŸãã
ãã®çµæãå¿ èŠãªãã®ããã¹ãŠåäžã®ãã¡ã€ã«ã¬ãã«ã§ã·ãªã¢ã«åããããšã«ããŸããã ããã§èšåãã䟡å€ãããå¯äžã®ããšã¯ããã¡ãããTexture2DãçŽæ¥ã·ãªã¢ã«åããããšã¯äžå¯èœã§ããããã¯ã¹ãã£ããšã³ã³ãŒãããããšã§ãã€ãã®é åã«å€æã§ããŸãã Unityãç§ãã¡ã®ç掻ãç°¡çŽ åããã®ã¯ã次ã®ããšãè¡ãã ãã ããã§ãã
byte[] levelTexture = textureInstance.EncodeToPng();
é«åºŠãªã¬ãã«ãšãã£ã¿ãŒ
ã¬ãã«ãšãã£ã¿ã¯ã²ãŒã ã®åªããæ©èœã§ãããã»ãšãã©ã®å Žåããã¬ãŒã€ãŒã¯ãŒãããéå§ãããã³ã«éå±ããŸãã åè¿°ã®ããã«ããããªã§ã¯ãã¡ã€ã«ãã.pngãããŠã³ããŒãããæ¹æ³ãæ¢ã«ç€ºããŸããããè€éãªåé¡ã解決ããããšãªãã²ãŒã ãWebGLã§åäœããããã£ãã®ã§ãã
ãã¬ã€ã€ãŒãã¬ãã«ãšãã£ã¿ãŒãããªã³ã¯ãæ¿å ¥ããããããã¯ã¹ãã£ã®ã€ã³ã¹ã¿ã³ã¹ãšããŠããŒãã§ããããã«ããããã«ã次ã®è§£æ±ºçãæãã€ããŸããã ãã®åŸã®è³ªåã¯ãã¬ãã«ã€ãã³ããèšå®ããŠä¿åããããšã ãã§ãã
ãããè¡ãæ¹æ³ïŒ Unityã«ã¯WWWã¯ã©ã¹ãããããããã¯ã¹ãã£ãããŒãããããã®ã³ã«ãŒãã³ãäœæããŸãã
IEnumerator LoadTextureFromWWW(string url) { WWW www = new WWW(url); yield return www; // www , if(www.texture == null) { // } else { // , textureInstance = www.texture; } }
泚ïŒäžèšã®ã³ãŒãã¯æ£ããã§ãããUIãåŠçãããããšãã£ã¿ãŒãååæåãããããäœæ¥ã³ãŒãã«ããã€ãã®è¿œå ã®è¡ããããããããã¯ãŸã æ¬äŒŒã³ãŒãã§ãã æãéèŠãªããšã«éäžã§ããããã«ãããã«ã¯è¿œå ããŠããŸããã ãã¡ãããå®å šãªã³ãŒãã¯ãããªã«ãããŸãã
äžèšã®ã³ãŒãã¯ãã¹ãŠããã¹ã¯ããããã«ãã§ããŸãæ©èœããŸããã«ã¹ã¿ã ã¯ãªããããŒããç¬èªã®Unityå ¥åãã£ãŒã«ãã«è²Œãä»ããããšãã§ããããã§ãã ããã...
WebGLã¢ã»ã³ããªã®å€æŽ
... WebGLã§ã¯ããã¯èš±å¯ãããŠããŸããã ãã®åé¡ãåé¿ããã«ã¯ãWebGLã¢ã»ã³ããªã®ã€ã³ããã¯ã¹ãã¡ã€ã«ã«å°ããªjavascriptãã©ã°ã¡ã³ããæ¿å ¥ããŸãã ãã®ãããªãã®ïŒ
// ( WebGL-) var gameInstance = UnityLoader.instantiate("gameContainer", "Build/lennys.json"); // function GetUserInput(){ var inp = prompt("link"); gameInstance.SendMessage("GameManager","ReceiveLink",inp); }
ããã«ããããã©ãŠã¶ã«ãããã¢ãããŠã£ã³ããŠã衚瀺ããããªã³ã¯ãæ¿å ¥ã§ããããã¹ããã£ãŒã«ãã衚瀺ãããŸãã [OK]ãã¯ãªãã¯ãããšãã¹ã¯ãªããã¯ã¡ãã»ãŒãžãéä¿¡ããã²ãŒã ãªããžã§ã¯ã "GameManager"ããã³é¢æ° "ReceiveLink"ãèŠã€ããŸãããã®çœ²åã«ã¯æååinpããããŸãã é¢æ°èªäœã¯æ¬¡ã®ããã«ãªããŸãã
public void ReceiveLink(string url) { linkField.text = url; }
ããã§linkFieldã¯UI InputFieldèŠçŽ ã§ãããç¹å¥ãªãã®ã§ã¯ãããŸããã
以äžã«æ³šæãã䟡å€ããããŸãã
- GameManagerãšããã¹ã¯ãªããããããŸãããJavaScriptã¯ãã®ååã®ã²ãŒã ãªããžã§ã¯ãïŒã¯ã©ã¹ã§ã¯ãããŸããïŒïŒãæ¢ããŠããŸãã åŒã³åºããŠããé¢æ°ã¯ãUIManagerã¯ã©ã¹ïŒåãã²ãŒã ãªããžã§ã¯ãå ïŒã«ãããŸãã
- ãã¬ã€ã€ãŒãã²ãŒã UIã®ãã¯ã¹ãã£ããŠã³ããŒããã¿ã³ãã¯ãªãã¯ãããŸã§ããã¯ã¹ãã£ã¯ããŒããããŸããã
JavaScripté¢æ°ãå®è¡ããã«ã¯ãurlããŠã³ããŒããã¿ã³ãã¯ãªãã¯ãããšãã«æ¬¡ã®è¡ãè¿œå ããå¿ èŠããããŸãã
Application.ExternalEval("GetUserInput()");
ããã«ãWebGLã«ã¯å¥ã®å¶éããããŸãã ã¯ããããªãã¯ãã§ã«æšæž¬ããŸãã-é çãé²ãããšãªããŠãŒã¶ãŒã¬ãã«ãç¶æããããšã¯ã§ããŸããã ãã®åé¡ã解決ããã«ã¯ïŒ éåžžã«ã·ã³ãã«-ãããžã§ã¯ãã®MVPãèšå®ããŸãã
ãã ããäœæããã¬ãã«ãç»åãšããŠããŠã³ããŒãããã¬ãã«ããŸãã¯ææãã®ã¬ãã«ããã¬ã€ã€ãŒã«ãã¬ã€ãããå¿ èŠããããŸãããããã£ãŠããããããªã³ã¶ãã©ã€ã§ä¿æããŸããããã¯ãäœæããããã¹ãŠã®ã¬ãã«ã次ã®ã»ãã·ã§ã³ã§å€±ãããããšãæå³ããŸããç»åããªã³ã©ã€ã³ã§ã¢ããããŒãã§ãããããããã¯ããã»ã©æ·±å»ãªåé¡ã§ã¯ãããŸããããŸããWebGLãã©ãããã©ãŒã äžã«ãããã©ãããå€æããŸããããã¯æ¬¡ã®ããã«è¡ãããŸãã
if (Application.platform == RuntimePlatform.WebGLPlayer) isWebGl = true;
泚ïŒäž»ã«ãã¥ãŒããªã¢ã«ã®äžéšãšããŠããããã¹ãŠè¡ããŸããå®éããã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒãä»ã®ãã©ãããã©ãŒã çšã®ã¢ã»ã³ããªãäœæããã€ããã¯ãªãã£ãããããã¹ãŠãWebGLã«å€ããããšãèšç»ããŸããããããã£ãŠããã¡ã€ã«ãããŒã«ã«ã«ä¿åãã代ããã«ãã¡ã¢ãªã«ä¿åããŸãã
ãããã«
éåžžã«èå³æ·±ããããžã§ã¯ãã§ããã空ãæéã«åãçµã¿ãŸãããã1ã2é±éããããŸãããããŠãããã®ãã°ã©ãã£ãã¯ããšãã¢ãã¡ãŒã·ã§ã³ããåŠç¿ããŠäœæããæéãé€ããŠãçŽæ¥äœæ¥ã¯ãããªãšã»ãŒåãæéã§ããããããŠãã¡ãããã²ãŒã ã«ã¯ãã°ããããŸãã
ãŸããããã€ãã®APIåŒã³åºãã«å ããŠãã³ãŒãã¯åºæ¬çã«éåžžã«åçŽã§ããããšã«ã泚æããŠãã ããã
ããã§å®èšŒããããã¯ã»ã«å®ç§ãªãã€ãã³ã°ã¯ããã®æ代ã®ä»ã®ããã€ãã®ã²ãŒã ãäœæããããã®åºçºç¹ã§ããããŸãããããã§ã¯ç§å¯ãæãããŸããããããã«ä»ã®ãããžã§ã¯ãã«åãçµã¿ãç§ã®ãã£ã³ãã«ããã©ããŒããå¿ èŠã«å¿ããŠãµããŒãããŸãã