ãããžã§ã¯ãã®éçºã«é¢ããã¹ããŒãªãŒã¯Webã«äŒŒãŠããŸããé¢é£ã®ã¹ããªã³ã°ã¯ã©ãã«ã§ããããèå³æ·±ãã¢ã€ãã¢ã«é¢ããã¹ããŒãªãŒã§ãã ãããŠãæã
ãç©èªã®ç³žã¯çãããã°ã®åšãã«ã«å
ãŸããŸãã ãã®ãããä»ã§ã¯å€§éã®è³æãèç©ãããŠãããããæåã®èšäºãå
¬éããåã«ãèšäºã®2çªç®ã®éšåã®äœæ¥ãéå§ããå¿
èŠããããŸãã
ãããŠä»ã2çªç®ã®ããŒããå
¬éããããšãã3çªç®ã®ããŒãã«ã¯çŽ æã§ååã§ãïŒ :)
ä»æ¥ã®ããã°ã©ã ïŒããžã¥ã¢ã«ã¢ãŒããã¯ãã£ãšãããžã§ã¯ãã¢ãŒããã¯ãã£ã®æ··åã ããããæåã«ã圱ã«ã€ããŠããã«ããã€ãã®è©³çŽ°ã説æããŸãã
ãããè¡ããïŒ
èšäº
ç®æ¬¡
ã¬ãã«3.4 ã·ã£ããŠãããŒãžã£ãŒã
ãåç¥ã®ããã«ã圱ã¯CPUã§ãã§ã«çæãããŠãããå€ãã®æé©åãè¡ãããŠããŸãã ãããããããã®ã¬ã³ããªã³ã°ãå®æãããå¿
èŠããããŸãã çæãæ±ã£ãŠããéãæãç°¡åãªã¬ã³ããªã³ã°æ¹æ³ãå¿
èŠã ã£ãããã次ã®ããã«æ©èœããŸãã
- ã·ã£ããŠãæ圱ããåãªããžã§ã¯ãã«ã¯ãç°ãªãã·ã§ãŒããŒã§ã·ã£ããŠãã¬ã³ããªã³ã°ãã2ã€ã®åå«ããããŸãïŒ1ã€ã¯èé¢ã®ã¿ããã1ã€ã¯åé¢ïŒã
- ã¹ããŒãžäžã«ã¯å·šå€§ãªã¹ãã©ã€ãããããããã¯æåŸã®ã¹ãã©ã€ãã«ãã£ãŠæç»ãããã¹ãã³ã·ã«ããŒã以å€ã®å€ãæã£ãŠããå Žåã¯åžæã®è²ã«çè²ãããŸãã
ãããã©ããªåé¡ãåŒãèµ·ãããšæããŸããïŒ- æãåçŽãªã®ã¯ããªããžã§ã¯ãã®è€è£œïŒåèŠçŽ ã«2ã€ã®åäžã®åå«ïŒã§ãã 2ãã¹ã·ã§ãŒããŒãäœæããŠããããåãé€ãããšã¯ãªãã·ã§ã³ã§ã¯ãããŸããã ãã«ããã¹ã·ã§ãŒããŒãæã€ãªããžã§ã¯ãã¯å転ã§ããŸããã
- ããã«ã圱ä»ãã®å
æºã1ã€ã ãäœæããæ©èœã
- å
ãæ±ãããã®éåžžã«è²ªæ¬²ãªæ©äŒïŒå®éãå
ã¯ãªãã圱ã ããããããïŒã ãããã£ãŠãè²ä»ãã®åœ±ãäœæã§ããŸãããè²ä»ãã®ç
§æ-ãããã
- ã¹ãã³ã·ã«ãããã¡ã¯å®å
šã«äœ¿çšãããŠãããä»ã®å¹æã«ã¯äœ¿çšã§ããŸããã
ã¢ã€ãã¢ã¯ç°¡åã§ããã·ã£ããŠã¬ã³ããªã³ã°ãå¥ã®ããã»ãŒãžã§ã¬ã³ããªã³ã°ããä»»æã®æ°ã®å
æºã«ã·ã£ããŠãæ圱ããæ©èœãè¿œå ããŸãïŒã¯ããfpsã¯ããã¿ãŸãïŒã
åèšã§ãããã€ãã®ã¯ã©ã¹ãå¿
èŠã§ããïŒ
- LightSourceã¯ãç¡éã®ç¯å²ãæã€æäžé»ç¯ã§ã圱ãšç
§æã®è²ãèšå®ããŸãã
- IShadowSource ãã·ã£ããŠåã«ãŠã³ãé¢æ°void RebuildShadowïŒVector3 lightPositionïŒãæã€ã€ã³ã¿ãŒãã§ãŒã¹ã
- ShadowRenderer㯠ããã¹ãŠã®å
æºãšåœ±ãç»é²ãã圱ãã¬ã³ããªã³ã°ã§ããŸãã
ã³ãŒããèšè¿°ãããã·ã§ãŒããŒããã§ãã¯ãããå
ã«é²ãããšãã§ããŸãã ãããŠãåé¡ãå§ãŸããŸããã
ãã£ããã·ã£ããŠã
äžã®ç»åã«ã¯2ã€ã®åé¡ããããŸãã
第äžã«ã圱ãé·ãããŠããªããžã§ã¯ãã誀ã£ãŠéãªãããšããããŸãã ããã¯ã空ã®zãããã¡ãŒã®äžã«åœ±ãã¬ã³ããªã³ã°ãããå Žåã«çºçããå¯èœæ§ããããŸãïŒä»ã®ãªããžã§ã¯ãã¯åœ±ãšãªãŒããŒã©ããã§ããŸããã圱èªäœã¯zãããã¡ãŒã«äœãæžã蟌ã¿ãŸããïŒã
第äºã«ãããã€ãã®å¥åŠãªãã€ãºã®åœ±ã ããã¯ãã¯ãªãŒãã³ã°ãããŠããªããããã¡ã䜿çšããŠããå Žåã«çºçããŸãã
ãã®ãããåé¡ã¯ãäœæ¥äžã®zãããã¡ãŒãã«ã¡ã©ã§äœ¿çšãããŠããªãããã«èŠããããšã§ãã ãã¬ãŒã ã¬ã³ããªã³ã°ã¯æ¬¡ã®ããã«ãªããŸãã
- RenderTextureã§ã®ã·ãŒã³ã®ã¬ã³ããªã³ã°ã
- ã·ã£ããŠã¬ã³ããªã³ã°ã深床ãããã¡ã¯é
ç®1ããååŸãããã«ã©ãŒãããã¡ã¯ç¬èªã®ãã®ã§ãïŒè©³çŽ°ã«ã€ããŠã¯åŸè¿°ïŒã
- 圱ãšã¬ã³ããªã³ã°ãããã·ãŒã³ã®æ§æã
- ãã¹ããšãã§ã¯ãã
ãããã¡ã®åå¥ã®äœ¿çšã«ã€ããŠããã¹ããšãã§ã¯ãã䜿çšããå Žåãå€ãã®å Žåãã·ã§ãŒããŒã䜿çšããŠãã¯ã¹ãã£ãå€æããå¿
èŠããããŸãã Unity3Dã«ã¯ããã®ããã®Graphics.Blitã¡ãœããããããŸãã ãœãŒã¹ãã¯ã¹ãã£ããã®äžã«æž¡ããã¿ãŒã²ãããæå®ããŸã-æç»ããå Žæããããªã¢ã«ãããã«ã¯ã·ã§ãŒããŒãã¹ã§ãã
å®éãå°ãªããšã3ã€ã®ç°ãªããããã¡ãŒã䜿çšããŸãã
- ãã¯ã»ã«ã®è²ãèªã¿åãå
ã®ã«ã©ãŒãããã¡ãŒã
- è²ãæžã蟌ãã¿ãŒã²ããã«ã©ãŒãããã¡ãŒã
- æ·±ã+ã¹ãã³ã·ã«ãããã¡ãŒãæžã蟌ã¿å
ïŒããã³æ·±ãããã³ã¹ãã³ã·ã«ããŒã¿ã®èªã¿åãå
ïŒã
ãŸãã Graphics.Blitã¡ãœããã§ã¯ãã¿ãŒã²ããã«ã©ãŒãããã¡ãŒãšæ·±åºŠãããã¡ãŒã¯åé¢ã§ããŸããã ã€ãŸããããšãã°ããœãŒã¹ãã¯ã¹ãã£ããã·ãŒã³ãžãªã¡ããªã®æ·±ããèªã¿åããã¿ãŒã²ããã«ãã¯ã»ã«ãæžã蟌ãå¿
èŠãããå Žå-æ®å¿µã§ãã
ãŸãã¯ãã·ãŒã³ã¬ã³ããªã³ã°ããã¯ã¹ãã£ã«è¡ã£ããšãã«ãäžéšã®ã·ã§ãŒããŒãããŒã¿ãã¹ãã³ã·ã«ã«æžã蟌ã¿ããã®ããŒã¿ã䜿çšããŠæ°ãããã¯ã¹ãã£ãååŸãããïŒãããŠå
ã®ãã¯ã¹ãã£ãä¿åããŸãïŒïŒ-æ®å¿µã§ãã
æãéããããUnity3Dã®ããã¥ã¡ã³ãã«ã¯ãããæ瀺çã«èšèŒãããŠããŸãã
ãœãŒã¹ïŒã¬ã³ããŒïŒãã¯ã¹ãã£ã®äžéšã§ãã深床ãŸãã¯ã¹ãã³ã·ã«ãããã¡ãŒã䜿çšããå Žåã¯ãBlitæ©èœãšåçã®æäœãæåã§è¡ãå¿
èŠããããŸã-ã€ãŸããå®å
ã«ã©ãŒãããã¡ãŒãšãœãŒã¹æ·±åºŠãããã¡ãŒã§Graphics.SetRenderTargetãå®è¡ããæ£æ圱ãèšå®ããŸãïŒGL.LoadOrthoïŒããããªã¢ã«ãã¹ïŒMaterial.SetPassïŒãã»ããã¢ããããã¯ã¯ãããæç»ããŸãïŒGL.BeginïŒã
äžè¬ã«ãã¹ããªãã転éãããã¡ãŒãèš±å¯ããBlitã®ä¿®æ£ããŒãžã§ã³ïŒ
static void Blit(RenderBuffer colorBuffer, RenderBuffer depthBuffer, Material material) { Graphics.SetRenderTarget(colorBuffer, depthBuffer); GL.PushMatrix(); GL.LoadOrtho(); for (int i = 0, passCount = material.passCount; i < passCount; ++i) { material.SetPass(i); GL.Begin(GL.QUADS); GL.TexCoord(new Vector3(0, 0, 0)); GL.Vertex3(0, 0, 0); GL.TexCoord(new Vector3(0, 1, 0)); GL.Vertex3(0, 1, 0); GL.TexCoord(new Vector3(1, 1, 0)); GL.Vertex3(1, 1, 0); GL.TexCoord(new Vector3(1, 0, 0)); GL.Vertex3(1, 0, 0); GL.End(); } GL.PopMatrix(); Graphics.SetRenderTarget(null); }
ã³ãŒãã§äœ¿çšïŒ
void RenderShadowEffect(RenderTexture source, RenderTexture target, LightSource light) { shadowEffect.SetColor("_ShadowColor", light.ShadowColor); shadowEffect.SetColor("_LightColor", light.LightColor); shadowEffect.SetTexture("_WorldTexture", source); shadowEffect.SetTexture("_ShadowedTexture", target); Blit(target.colorBuffer, source.depthBuffer, shadowEffect); }
ããã§åé¡ã¯äœã§ããïŒ åºåã§ã«ã¡ã©ãã¬ã³ããªã³ã°ããRenderTextureãå®å
šã«ç©ºã«ãªã£ãŠããã®ã¯ãªãã§ããïŒ
ã·ã£ããŠããªãã«ããŠããã¬ãŒã ãããã°ã瀺ãå
容ã確èªããŸãã
å¥åŠãªã¬ã³ããªã³ã°ãã¯ã¹ãã£ã
奜å¥å¿ã匷ãã æããã«ãã¢ã³ããšã€ãªã¢ã·ã³ã°ã®ãã¹ããšãã§ã¯ãã¯ãã«ã¡ã©ããã®ãã¯ã¹ãã£ã«åŒ·å¶çã«ã¬ã³ããªã³ã°ããŸãã åæã«ããã®ãã¯ã¹ãã£ã«ã¢ã¯ã»ã¹ã§ããŸãããCamera.activeTextureã§ã®ãããã°ã空ã®å Žåã
ãããã¢ã³ããšã€ãªã¢ã¹ïŒ æç»ã·ãŒã±ã³ã¹ã«ç»ãïŒ æ¬¡ã«ãã³ãŒãã«å
¥ããŸãïŒ
ãã¹ããšãã§ã¯ãã¯MonoBehaviour.OnRenderImageã¡ãœãããä»ããŠæ©èœã ãIã¯MonoBehaviour.OnRenderImageãä»ããŠæ©èœã ã
MonoBehaviour.OnPostRender ã ç§ã¯æ±ãããã¯ãããŠããŸãïŒOnRenderImageã®ååãApplyã«å€æŽãã圱ãã¬ã³ããªã³ã°ããåŸãrenderTextureã§æã§åŒã³åºããŸãã çŸåšãã¢ã³ããšã€ãªã¢ã¹ã¯åœ±ã劚ããŸããã
æ°ãã圱ã䜿çšãããšãè²åå·®ãæ»ãããªåœ±ãªã©ãããŸãå¿
èŠã§ã¯ãªãé¢çœããã®ãäœæã§ããŸãã
ããããªåãã®ããæ®éã®æ·¡ã圱ã
3è²ã®åœ±ã
æºåž¯é»è©±ã§ã¯åœ±ãé
ããªããŸãïŒçŽ10ã15 fpsãæ¶è²»ããŸãïŒã ãã¹ãŠãæ²ããå Žåã¯ãæåŸã«ãã¹ãŠãã·ã³ã°ã«ãã¹ã¬ã³ããªã³ã°ã«ç§»è¡ããŸãããçŸæç¹ã§ã¯å
æºã«é ŒããŸããã
ãã³ãïŒã°ã©ãã£ãã¯ã®ãããã°ãå³èã§è¡ããŸãïŒ é ç¹ã·ã§ãŒããŒã®ãããã°ã¯æéãããããããã§ããéããã¹ãŠã®ããŒã¿ãèŠèŠåããŸããæ³ç·ã«æ²¿ã£ãŠé ç¹ãåŒãåºããããè²ãéæ床ãè¿œå ãããããŸãã
ã·ã§ãŒããŒãšã®ãºã¢ã«ããèŠèŠåã®ãããã°ã
èšèšã®æ±ºå®ã倱æããããã«ãæ°ããã¯ã©ã¹ãè¿œå ããããšãé£ãããªã£ãããšãããããŸããã
TodoïŒããããªã¢ãŒããã¯ãã£ãšãããžã§ã¯ãã³ãŒã
ã¬ãã«4.1 ã¢ãŒããã¯ãã£ã®ãªãã¡ã¯ã¿ãªã³ã°ã
èŠããŠããããã«ãç§ã¯ãããã¿ã€ãã䜿çšããŠãããžã§ã¯ããéçºããŠããŸãã ãããããã¹ãŠã®ãããã¿ã€ãã¢ãŒããã¯ãã£ããã«ãããã¯ãããŸããïŒ2æéã§æžããããããã¿ã€ãã®ã©ã®ã¢ãŒããã¯ãã£ãç¥ã£ãŠããŸããïŒïŒããã®ããããªãã¡ã¯ã¿ãªã³ã°ãå¿
èŠã§ãã
ã ããïŒ
å§ããããã«ã MonoBehaviourããScriptableObjectã«ã§ããã ãå€ãã®ããŒã¿ãåãåºããŸãã ãããã¯ããã¹ãŠã®çš®é¡ã®ã¹ã¿ã€ã«ãèšå®ããã¬ããã®ã©ã€ãã©ãªã§ãã
ãããžã§ã¯ãèšå®
BulletCasterãMovableObjectãªã©ããã¹ãŠã®ããžãã¯ãå°ããªã¯ã©ã¹ã«åå²ããŸãã ããããã«å¿
èŠãªèšå®ãå«ãŸããŠããã1ã€ã®ç®æšã®ã¿ãè¿œæ±ããŠããŸãã
ãããã®ã¯ã©ã¹ã«ã¯ãéåžžã«ã·ã³ãã«ãªã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã public class BulletCaster : MonoBehaviour { public void CastBullet(Vector2 direction); } public class MovingBody : MonoBehaviour { public Vector2 Direction {get; set;} public bool IsStopped {get; set;} }
ãã€ã¯ãã¯ã©ã¹ãããè€éãªããžãã¯ãçµã¿ç«ãŠãããšãã§ããŸãã
ç§ã¯ãã·ã³ã°ã«ããŒã³ïŒClockãShadowManagerãªã©ïŒãžã®çŽæ¥çãªäŸåé¢ä¿ãåé€ãããµãŒãã¹ãã±ãŒã¿ãŒãã¿ãŒã³ãå®è£
ããŸãïŒå°ãç©è°ãéžããã®ã§ãããã·ã³ã°ã«ããŒã³ã®æ£ä¹±ãããã¯ããã«æ£ç¢ºã§ãïŒã
ã¬ã€ã€ãŒãä»ããŠè¡çªåŠçãå®è£
ããããããæé©åããŠãäžå¯èœãªè¡çªãæ瀺çã«åé€ããŸãïŒäŸãã°ãéç<->éçïŒã
ã°ããŒãã«ããŒã«ãèšè¿°ããããšã«ããããªããžã§ã¯ãã®äœæãæé©åããŸãã ããã¯å¥ã®ãã€ã¯ã ãšæããŸãããèªåã®æã§æžãããã£ãã®ã§ãã ããŒã«ã¯ããã¬ããããŒã䜿çšããŠãªããžã§ã¯ããäœæããäœæåŸã«ããããåæåããäœæ/åé€ããªããžã§ã¯ãã«éç¥ã§ããŸãã
ãããŠãããŒã«ãã§ãããé¢çœãåºæ¥äºãèµ·ãããŸãããç§ã®åŒŸäžžã«ã¯å¯¿åœããããŸãïŒçŽ10ç§ã®ãåçµãããŠããªããæéïŒã ããæ¥ãå¥åŠãªãã°ãçŸããŸãããã¯ãŒã«ããŠã³ãäºå®ããæ©ãé²ãã§ããã匟䞞ãã¿ã€ããŒã§æ¶ããããã«ã匟䞞ã®äžéšã空äžã«æ¶ããŸããã
ãã£ããããã®ã¯å°é£ã§ããããã¹ãŠã®åŒŸäžžãæ¶ããããã§ã¯ãããŸããããå°ãªããšã1ã€ãæ¶ããããšãæåŸ
ããŠãããããã®åŒŸäžžãããã¥ãŒããŸããã
ãããã2ã€ã®å¥åŠãªäºå®ãèŠã€ããããšãã§ããŸããã
- 匟䞞ã¯ãã¬ãã«ãåèµ·åãããåŸã«ã®ã¿æ¶ãå§ããŸããã
- ç®æ¡æžããåé€ããã³ãŒãã¯ãŸã£ããåŒã³åºãããŸããã§ããã
æãéèŠãªã«ãŒã«ãåã³å€±æããŸããïŒ
ãã°ãèŠç¥ãã¬äººã§ããã»ã©ãæããªäººãåå ã§ãã
ã ããã楜ãã¿ãã ããïŒ
- ã¬ãã«ã¯ããªããŒãããã«1ã€ã®ã·ãŒã³ã§åäœæãããŸãã
- ã¬ãã«ãäœæãããšãã«ãå€ãå£ãåé€ããã®ãå¿ããŸããïŒã¬ãã«ãåãã§ãããããéå±€å
以å€ã®ã©ãã«ã衚瀺ãããŸããã§ããã
- 匟䞞ããã®ãããªäºéå£ã«è§Šãããšãè¡çªãã³ãã©ãŒã2ååŒã³åºãããŸããã
- è¡çªãã³ãã©ãŒã§ã匟䞞ãåé€ãããŸãïŒããŒã«ã«è¿œå ãããŸãïŒã ãããã£ãŠãããŒã«ããŒã¿ã«ã¯åãããŒã«ãžã®2ã€ã®åç
§ãå«ãŸããŠããŸããã
- ãã°ããããŠããã¬ãŒã€ãŒã¯ãã®åŒŸäžžãçºå°ããŸããã
- ããŒã«ããåã³æ®åœ±ããããšãããšããã§ã«ã¢ã¯ãã£ããªé£è¡åŒŸäžžãžã®ãªã³ã¯ãåãããŸããã 圌女ã¯ååæåãã座æšãå€æŽãããåã®ã匟䞞ã空äžã«æ¶ããŸããã
ãã¡ããããã®ãããªééãã¯ãå€ãå£ããªããŠãè€éãªè¡çªããã£ãå Žåã«ãèµ·ããåŸãŸãã ãã®ãããè¡çªæã®ãªããžã§ã¯ãã®ã¢ã¯ãã£ããã£ã«ãã§ãã¯ãè¿œå ãããã¡ããå€ãå£ãåé€ãå§ããŸããã
äžäŸ¿ãªã¿ããã®åé¡ãæãåºããTouchManagerãå®è£
ããŸãã 圌ã¯æåŸã®ã¿ãããèŠããŠããã圌ã ãã远跡ããŸãã çãããïŒæã®æºãïŒãç¡èŠããŠãæåŸã®Nåã®åããä¿åããŸãã æãããŠã¹ãç»é¢ã«è§Šããã®ããããç¬éã«ããããŒãžã£ãŒã¯ãžã§ã¹ãã£ãŒã®æ¹åãšé·ããèšç®ããŸãã ãžã§ã¹ãã£ãçãããå ŽåããããŒãžã£ãŒã¯ãããç¡èŠããŸãããã¬ãŒã€ãŒã¯æ確ãªæ¹åãéžæããââã«å¿ãå€ããŸãã
ããã§ã³ãŒããèªã¿ããããªããæ°ããã¯ã©ã¹ã®è¿œå ã容æã«ãªãããªãªãŒã¹ãæ¶æ»
ããåã«ææ°ã®æ©èœãè¿œå ãããšãããžã§ã¯ãã®ã¢ãŒããã¯ãã£ãã°ãã°ãã«ãªããšããæããããŸãã
ã¢ãŒããšã²ãŒã ã®ããžãã¯ã«æ»ãããšãã§ããŸãã å®éã«ã¯ãã²ãŒã ã®ããžãã¯ã¯ãããã«ãªããŸãã
TodoïŒãã¬ã€ã€ãŒã®ã²ãŒã ãã¬ã€èŠçŽ ãã²ãŒã ãã¬ã€ã®æå¿«ããšã·ã³ãã«ãã«ã€ããŠèããŠãã ããã
ã¬ãã«4.2 ã²ãŒã ãªããžã§ã¯ãã®ãªãã¡ã¯ã¿ãªã³ã°
ã²ãŒã ãã¬ã€æ©èœãæ€èšãããšããç§ã¯èšå€§ãªæ°ã®å¯èœæ§ã«é
äºãããŸããã èªåã§å€æãããšããã¹ãŠã®ãªããžã§ã¯ãã«ã¯4ã€ã®çŽäº€ç¹æ§ããããŸãã
- 匟䞞ã¯åå°ãŸãã¯åžåããŸããïŒ
- 匟䞞ã§ãªããžã§ã¯ããç Žå£ããŸããïŒ
- åããŠããã®ã§ããããããšãéçã§ããïŒ
- ãªããžã§ã¯ãã®çš®é¡ïŒãã¬ã€ã€ãŒ/æµ/æ°é人ïŒã¯äœã§ããïŒ
ãããã®ç¹æ§ã¯ãã¹ãŠçµã¿åãããŠããã®å Žã§å€æŽããããšãã§ããŸãã ããããããããã¬ãŒã€ãŒã«ã©ã®ããã«èŠãããïŒ æåãç§ã®ãªããžã§ã¯ãã®ãªã¹ãã¯æ¬¡ã®ããã«ãªããŸããã
- æ®éã®å£ ã 匟䞞ãåžåããŸãã
- é¡ã®å£ ã ç®æ¡æžããåæ ããŸãã
- å€é建ãŠã®å£ ã åããã¢ã¯ç¡å°ãŸãã¯é¡é¢ã§ãã 匟䞞ãåœãããšãäžã®éãç Žå£ãããäžã®éãåããŸãã ãããã£ãŠãã«ãŠã³ã¿ãŒãªã©ãè¡ãããšãã§ããŸãã
- ããã¯ã¹ åçã§ãããç Žå£ã§ããªã匟䞞ãåžåããŸãã
- ãã©ãŒããã¯ã¹ ã åçã§ã¯ãããç Žå£ã§ããªã匟䞞ãåæ ããŸãã
- ãã¯ã㪠ãã€ãããã¯ã§ç Žå£ããããã¬ã€ã€ãŒã¯æ»ã¬ãšãã€ã³ãã倱ããŸãã
- æµ ãã€ãããã¯ãç Žå£ããããããªãã¯ã¬ãã«ãå®äºããããã«å
šå¡ãåãå¿
èŠããããŸãã
- æµããã©ãŒãªã³ã°ããŸãã éåžžã®æµããæµãç Žå£ãã匟䞞ãåæ ãããŸãã
- ã¯ãªã¹ã¿ã« ã 匟䞞ã«ãã£ãŠç Žå£ããããã€ãããã¯ããã¬ãŒã€ãŒããããã«è§Šããå Žåã圌ã¯ããŒãã¹ãåãåããŸãã
- ãã¬ã€ã€ãŒ
å©çšå¯èœãªãã¹ãŠã®ãªããžã§ã¯ãã
ç§ã¯æããã«ããã®ãã¹ãŠã®çŸããã®æ確ãªèŠèŠåã«åé¡ãããã§ãããã äœããªããŒãžã§ã³ã®äœæ¥ãéå§ãããšããåçŽãªã«ã©ãŒã³ãŒãã£ã³ã°ã䜿çšããäºå®ã§ããã
- ãšããžã®è²ã«ãã£ãŠãªããžã§ã¯ãã®ã¿ã€ãã決ãŸããŸãã
- 倩äºã®çœãè²ã¯éçãªãªããžã§ã¯ãïŒå£ïŒã瀺ãã倩äºã®ç«¯ã®è²ã§çè²ããã倩äºã¯åçã§ãã
ããšãã°ãç°è²ã®ãšããžã¯ããªããžã§ã¯ãã匟䞞ãåžåããããšãæå³ãã玫è²-åå°ããŸãã ãããããšããžã®è²ã¯å€ãã®ããããã£ããšã³ã³ãŒãããå¿
èŠãããããšãããããŸããã è€éãããŸãã ç§ã¯æãããªåé¡ãæã€ãªããžã§ã¯ãã®çš®é¡ãèŠã€ããŸãïŒ
- å€é建ãŠã®å£ã åºã1ã€ã ãæ®ã£ãŠããå Žåãéåžžã®å£ãšå€ãããŸããã ãããã圌ã¯ç Žå£ãããŸãã ãã©ããïŒ éåžžã«éè«ççãªæ©èœã
- ãã©ãŒããã¯ã¹ã 匟䞞ã¯åžžã«åãé床ã§ç§»åããŸãã ç®±ããåå°ããŠãããããç¡éã«äºæž¬äžå¯èœã«å éããŸãã
- æµããã©ãŒãªã³ã°ããŸãã ãæµãã§ããé¡ãã§ããªãå¥ã®è²ã䜿çšããå¿
èŠããããŸãã ãã®ãšã³ãã£ãã£ã¯ããã¹ãŠã®ã«ãŒããæ··ä¹±ãããã ãã§ãã
æ®ãã®åèšïŒ
- 2çš®é¡ã®å£ãæ®éã®å£ãšé¡é¢ã®å£ã
- ãã¬ã€ã€ãŒ
- é¶;
- æµ
- çµæ¶;
- ããã¯ã¹ã
ã¯ãªãŒãã³ã°åŸã«æ®ã£ããªããžã§ã¯ãã
ãã¹ãŠãé©åã«è²åããããŠããããªããžã§ã¯ãã¯ã»ãšãã©ãããŸããããã¬ãã«èšèšã®äœå°ããããŸãã
ã²ãŒã ãšã³ãã£ãã£ã決å®ããã³ãŒãããŽãããåé€ããã®ã§ãã°ã©ãã£ãã¯ãæçµç¶æ
ã«æ»ãããšãã§ããŸãã ãããã¯ãšãã§ã¯ããšç©çåŠã§ãããããããçš®é¡ã®ã€ã³ã¿ãŒãã§ãŒã¹èŠçŽ ã§ãã èŠããã«ãå€ãã®ä»äºããããŸãã
TodoïŒãªãªãŒã¹ãšãã§ã¯ãã®éçºãéå§ããŸãã
ã¬ãã«5.1ã æ»ã®åœ±é¿ã
æ£ç¢ºã§æ€èšŒæžã¿ã®ãžã§ã¹ãã£ãŒãšç§»åãè¡ãããŸããã 匟䞞ãé£ãã§ãå£ããåå°ãããã¬ãŒã€ãŒããæ°ãã¯ã»ã«ééããå¥ã®åå°æ¿ã®ç«¯ã«è§ŠããŠãåã³æ¹åãå€ããŸãã ä»ã圌女ã¯ãããäžã®æåŸã®æµãç®æããŠããŸãã åãã¯çµãããŸããã åå©ãåŸ
ã£ãŠããæ°ããåãã æ¹åã¯ãã¯ãéèŠã§ã¯ãããŸããïŒéå»ã®åŒŸäžžã¯ãã®ä»äºãããŸãã ãããã£ãŠããžãªã¡ããªã®æ³åã¯å®¹èµŠãªããã·ã§ã«ã¯ãã®ã¿ãŒã²ãããèŠã€ããŸãã 匟䞞ã¯æµã«è§ŠããŸã...ãããŠæµã¯æ¶ããŸãã æ®å¿µã ã
ã¯ãã匟䞞ãåœãã£ããšãã®ãã¡ã³ã欲ããã§ãã ã²ãŒã ã«èŠèŠçã«èšãã«ã¯ïŒ
- ãã¯ããããªãã¯ããããããŸããïŒããªãã¯ã¯ãœãã°ãã¡ããã«ããã眮ããŸããïŒã
ãŸãã¯ãã®éïŒ - ããã¡ããšããããã¡ããšãã...ããïŒããªãã¯ãšãŠãè¿ãã«ããã®ã§ãä»åºŠã¯ããäžåºŠããçŽããªããã°ãªããªãïŒã
ããããä»ã§ã¯åŒŸäžžãåœãããšãèŠçŽ ã¯åçŽã«æ¶ããŸãã åºã«ç©ãã¹ã ãŒãºã«æµžãããã«ããŠããŸãã é
ããŠäžèªç¶ã«èŠããŸããããªããžã§ã¯ãããã§ã«ç Žå£ãããŠããããšã¯æããã§ã¯ãªããæäœããããšã¯äžå¯èœã§ãã
ããŠãæ»ã®å¹æã«ã¯äœãå¿
èŠã§ããïŒ
- æãããå
·äœçã§æå³ã®ãããã®ã§ãªããã°ãªããŸããã
- æ»ã®çµæã¯ã¬ãã«å
šäœã§ç®ã«èŠããããã«ããæ°ãæ£ããã®ã§ã¯ãªããééãèšç»ããã®ã«åœ¹ç«ã¡ãŸãã
ç ŽçïŒ åŒŸäžžã§æµãç²ã
ã«ç²ç ããŸãããïŒ ããŒããããã¯è€éã§ã¯ãªãã§ããïŒ ãããããã¹ãŠã®ãªããžã§ã¯ãã¯åžåã§ãããåžåããªãŽã³ãã«ããããã®ã¯æ¥œããããšã§ãã
å®éãæµãååã«åãããšã¯ã§ããŸããã ããã€ãã®ã¡ãã·ã¥ã§æ§æãããŠããŸãã
- å
åŽã®åžå€è§åœ¢ã¯åçŽã§ãã
- ã«ã©ãŒãªã³ã°ã åžé¢ã ãã§ãªããç©ŽãéããŠããŸãã ãã ããNåïŒNã¯èŸºã®æ°ïŒã®åžåè§åœ¢ã§æ§æãããŸãã ãããã£ãŠãããããé
åã«ä¿åãããããããåãåããŸãã
- å€ã å®éãããã¯åã®æ®µèœã®åè§åœ¢ã®å€åŽã§ãã ããããPolygonCollider2Dãä»ããŠåŽé¢ãšç©çãã¬ã³ããªã³ã°ããããã«ã倧ããªåžããªãŽã³ãšåæ§ã«ããã䜿çšããŸãã
åå¥ã«åæããå¿
èŠããããªããžã§ã¯ãã®éšåã
ãã®çµæãã¢ã«ãŽãªãºã ã¯æ¬¡ã®ããã«ãªããŸãã
- ãªããžã§ã¯ãïŒãã¬ã€ã€ãŒãæµãªã©ïŒãå
åŽããªã³ã°ã®ç Žçã®é
åãå€åŽã«å€æããŸãã å°æ¥ããã®æ§é ããããŒã¹ããšåŒã³ãŸãã
- ããŒã¹ã®å¹ŸäœåŠçäžå¿ãèŠã€ããŸãã
- ã©ã³ãã ãªæ¹åãéžæãã幟äœåŠçäžå¿ãéããã®æ¹åã«çŽç·ããæç»ãããŸãã
- ãã®äžçãåãåããŸãã ãããè¡ãã«ã¯ãPieceããåããªãŽã³ïŒãªã³ã°ãå
åŽãšå€åŽã®ããŒãããŸãã¯ãããã®ããŒã¹ïŒãååŸããŸãã
4.1ã ãã€ã³ãã®å·Šå³ã®é
åãäœæããŸãã
4.2ã çŸåšã®é
åãå·Šã«ç€ºããŸãã
4.3ã å€è§åœ¢ã®æåã®ãã€ã³ããçŸåšã®é
åã«è¿œå ããŸãã
4.4ã æ®ãã®ãã¹ãŠã®ãã€ã³ãã確èªããŸãã
4.5ã çŸåšã®ãã€ã³ããšåã®ãã€ã³ããç·ã®åãåŽã«ããå Žåã çŸåšã®é
åã«çŸåšã®ãã€ã³ããè¿œå ããŸãã
4.5ã çŸåšã®ãã€ã³ããšåã®ãã€ã³ããç·ã®ç°ãªãåŽã«ããå Žåã亀ç¹ãèŠã€ãã å·Šå³ã®é
åã®äž¡æ¹ã«è¿œå ããŸãã çŸåšã®é
åãå察ã«åãæ¿ããŸãã çŸåšã®ãã€ã³ããæ°ããçŸåšã®é
åã«è¿œå ããŸãã - å·Šã®ãã¹ãŠã®ãã©ã°ã¡ã³ããæ°ããå·Šã®ããŒã¹ã«è¿œå ãã å³ã®ãã©ã°ã¡ã³ããå³ã«è¿œå ããŸãã
- ç¹°ãè¿ããŸãããçµæã®ãã©ã°ã¡ã³ããæå®ãããæ·±ããŸã§ååž°çã«ã«ããããŸããã
åã«ããã§ããªããžã§ã¯ãã2ã€ã®éšåã«åå²ããŸãããããã£ãŠã3ã€ã®ã«ããã§ã8ã€ã®ãã©ã°ã¡ã³ããåŸãããŸãã å°ãã ãæ·±ã¿ã®ãããéã³ããããããšãã§ããŸããããšãŠãçŸãããã§ããŸãã
ããªãŽã³ã®ã¡ãã·ã¥ãã³ã©ã€ããŒãã·ã£ããŠãäœæããããã®ã³ãŒããå€æŽããŠãç¹å®ã®ãã€ã³ãã§ãã©ã°ã¡ã³ããäœæã§ããããã«ããŸãã
ç§ã¯ãã®ãããªæçã«ã€ããŠç¥ããŸãã
æåã¯ãã£ãã·ã¥ãããããŒãã£ã·ã§ã³ãäœæããããã ãã䜿çšããäºå®ã§ãããããªã¢ã«ã¿ã€ã ã®ããŒãã£ã·ã§ã³ã¯ãã¬ãŒãããããŸãããããã壮芳ã«èŠããããšãããããŸããã
ãã©ã°ã¡ã³ãã¯ã圱ã®ããäžå¿«ãªãã°ãæããã«ããŸãããããªãŽã³äžã®ã·ã«ãšãããã€ã³ãã誀ã£ãŠæ€çŽ¢ããŸããã ãã®ãããåã®ãããªã§ã¯ããã©ã°ã¡ã³ãã®äžéšãéšåçã«ã®ã¿åœ±ãèœãšããŠããŸãã ä¿®æ£ã¯ãåã®èšäºã§æ¢ã«å©çšå¯èœã§ãã
ãã®ããã匟䞞ããªããžã§ã¯ãã«åœãããšãæåŸã®éšåããã©ã°ã¡ã³ãã«çœ®ãæããŸãã ãªããžã§ã¯ããããŒã«ã«å
¥ãããããã©ã°ã¡ã³ããããŒã«ããããŒããããæ°ãããã©ãŒã ã«åŸã£ãŠã¡ãã·ã¥/ã³ã©ã€ããŒãæŽæ°ããŸãã rigidBodyã®é床ã¯ãç Žå£ãããèŠçŽ ã®é床ãšåŒŸäžžã®æ¹åã«åºã¥ããŠèšç®ãããŸãã ãã©ã°ã¡ã³ãã¯isBulletãã©ã°ããªãã«ãªã£ãŠãããå£ãšçžäºäœçšããã ãã§ãã åãã©ã°ã¡ã³ãã«ã¯ç¹å¥ãªFloorHiderã¯ã©ã¹ããããåºãéããŠz座æšã§ãªããžã§ã¯ããäžããå®å
šã«æ¶ããåŸãåé€ããŸãïŒããŒã«ã«ç§»åããŸãïŒã
å°ããªå顧å±ïŒ
- ç Žç-éåžžã«ãç©ççã«ãç解å¯èœãªç»åã ãããã£ãŠãåæ¢æéã®æŠå¿µãç解ããã®ã«åœ¹ç«ã¡ãŸãã ç Žçã¯ã°ãã°ãã«é£ã³å§ããæéã¯æ¢ãŸãããã¹ãŠãããªãŒãºããŸãã ã²ãŒã ã¯æ±ºå®è«çãªã¿ãŒã³ããŒã¹ã®å€èŠ³ãåæ¢ããŸããã
- ãã¹ãŠã®ãã©ã°ã¡ã³ãã¯äºãã«æŠã£ãŠãããé床ã¯äœäžããŸããã
- ã¯ãªã¹ã¿ã«ã¯ãå¹æãªãã§ã¿ãããããšåé€ãããŸãã ãã¶ããã©ãã©ã«ãªããŸããïŒ
- ç Žå£åŸã®çè·¡ã¯ååã§ã¯ãããŸãããæ»æã®çµæããã®ã¬ãã«ã«ãšã©ãŸãããšãæã¿ãŸãã
- ãã¡ã³ã®ããã«èŠããã®ã§ãæ®åœ±ãããïŒ
ç ŽçïŒ
ãã©ãã©ã«æ£ãã°ãæµã¯éåžžã«å£®èŠ³ãªã¿ããã§ãããç Žçã跡圢ããªãæ¶ããŠããŸããšããäºå®ã«çãããããŠããŸãã 壮芳ã以å€ã«ãããã€ãã®çç±ããããŸããããªããããã®ãã¬ãŒã¹ãè¿œå ããå¿
èŠããããŸãã
TodoïŒæçã®çè·¡ã®å¹æãå®çŸããŸãã
ã¬ãã«5.2.1ã ã¹ãããã®å¹æã
ããžã¥ã¢ã«ã«ã€ããŠèããŠãããšãããã¬ã€ã€ãŒãNPCãæ»ãã ãšãã«çŸãããè¡çãã®ã¢ã€ãã¢ããããŸããã é·ãã¬ãã«ã§ã¯ããã®ãããªã¹ãããã¯ããã²ãŒã·ã§ã³ã«äŸ¿å©ãªã©ãã«ã«ãªããŸãã ãŸããæ倱ãçºçããå Žåãæµã®åæäœçœ®ãè©äŸ¡ããåééã®æŠè¡ãæ€èšããã®ã«åœ¹ç«ã¡ãŸãã
ã ãããã¹ãããã ãã«ãŒã«ãšã¬ã³ããªã³ã°ããããã¯ã¹ãã£ãå«ããªãã·ã§ã³ãç Žæ£ããŸããã¹ã¿ã€ã«ããæãåºãããã§ãã ç Žçã®çè·¡ãæ¶å€±ã®å Žæã衚瀺ããããšããŠããŸãã æªãèŠããïŒ
ããŸããŸãªæè²ãªãã·ã§ã³ã
ç§ã¯ããããããã¿ã€ãåãããªãã·ã§ã³ã®äžã§ãæ¬æ Œçãªå¡ãã€ã¶ãã«ã€ããŠèããŸãïŒ
äžè§åœ¢ã®æãäœæããã ãã§ãã
ã¯ãããã®ãªãã·ã§ã³ã®æ¹ã奜ãã§ããã ããããã¯ã€ã«ããªãªãŒããŒãããŒã§å€ãã®äžè§åœ¢ãäœæããã®ã¯æªãèãã§ãã ãã ããçµæã¯ã¢ã¶ã€ã¯ã«äŒŒãŠããããããããã€å³ã«åãã£ãŠèããŸãã
ãã ããã®å Žã§çæããã ãã§ããç¹ã«ããã®åŸã®ã¢ãã€ã«ããã€ã¹ã§ã®ãã€ãã®ç·©åïŒç·©åã«ããã»ã«ã®ãµã€ãºãåæ§ã«ãªããŸãïŒã§ã¯ãçã¿ã倧ããããŸãã äºåèšç®ãå¿
èŠã§ãã ããã«å¥ã®åé¡ããããŸãïŒã¹ãããã¯äºãã«ä»»æã®è·é¢ã«ããå¯èœæ§ããããç¡é倧ã®å³ãèšç®ã§ããªãããšã¯æããã§ãã ã¿ã€ãªã³ã°ãšã¯äœã§ããïŒ :)
ãŸãããããã€å³ãçæããã®ã«é©ããã©ã€ãã©ãªãèŠã€ããŸãã
ä»ãç§ã¯ã¿ã€ã«ãæ±ã£ãŠããŸãã ããŒã©ã¹äžã«ãã€ã¢ã°ã©ã ãçŽæ¥äœæããããšã¯çæ³çãªè§£æ±ºçã§ãããã©ã€ãã©ãªã®ãžã£ã³ã°ã«ã«å
¥ã£ãããèªåã§æžãããããããšã¯æ¬åœã«ããããããŸããã ãããã£ãŠã次ã®ã¢ã«ãŽãªãºã ãæãä»ããŸãã
- 座æš{-0.5ã-0.5ã0.5ã0.5}ã®æ£æ¹åœ¢ã«Nåã®ãã€ã³ããäœæããŸãã
- éé[-tilesãtiles]ã®åYããã³éé[-tilesãtiles]ã®Xã«å¯ŸããŠãX = 0ãY = 0ãé€ãïŒ
2.1ã ãªãã»ããXãYã§ãã€ã³ããã³ããŒããŸãïŒã¿ã€ã«= 1ã®å Žåãéå§ã»ã³ã¿ãŒã§9ã¿ã€ã«ãååŸãããŸãïŒã - ãã¹ãŠã®ãã€ã³ãïŒçœ®æãããã¯ããŒã³ãå«ãïŒã®ãããã€å³ãäœæããŸãã
- å¿
èŠã«å¿ããŠããã€ãã®ãªã©ã¯ãŒãŒã·ã§ã³ãé©çšããŸãã
- çµæã®ããªãŽã³ããã¹ãŠèª¿ã¹ãäžå¿ãå
ã®æ£æ¹åœ¢{-0.5ã-0.5ã0.5ã0.5}ã«ããããªãŽã³ã®ã¿ãæ®ããŸãã
çµæã¯ãå€è§åœ¢ã®ã¿ã€ã«ã§ãããã®ã¿ã€ã«ã§ã¯ãå·ŠåŽãå³äžãäžããäžïŒå¯Ÿè§ç·ãåæ§ïŒã«å®å
šã«åãŸããŸãã å®éããã¹ãŠãããã»ã©ã¹ã ãŒãºã§ã¯ãããŸããã
ã¢ã€ãã¢ã¯ããããã€å³ã¯éåžžã«ããŒã«ã«ãªãã®ã§ããããããã¹ãŠã®æ¹åã«ãœãŒã¹ãã€ã³ãã®ã³ããŒãããã€ãäœæããããšã§ããŒã©ã¹ããšãã¥ã¬ãŒãã§ããŸãã ãããããã€ãã®ç·©åã¯ç¢ºãã«ããŒã«ã«ã§ã¯ãªããå埩åæ°ãå€ãã»ã©ãããå€ãã®ã³ããŒãäœæããå¿
èŠããããŸãïŒã¿ã€ã«ã®å€ãå¢ãããŸãïŒã
ãããŠãçµå±ã®ãšãããäžå¿ã®åº§æšã¯ãæµ®åå°æ°ç¹ããã§ãã¯ããããã«åžžã«æ£ããåäœãããšã¯éããŸããã ãããã£ãŠãéåžžã«ãŸãã«ãã¢ã¶ã€ã¯ã®ç«¯ã«ããèŠçŽ ãæ¬ èœããŠããå ŽåããããŸãã
ç¹°ãè¿ããèŠã€ããŸããïŒ
ãããã£ãŠããã®ã¢ã¶ã€ã¯ã®ãããªãã®ãåŸãããŸãã
ã©ã€ãã©ãªã®ãã¯ã¹ãã£ã«ã¬ã³ããªã³ã°ãããã¢ã¶ã€ã¯ã
èšç®ãããã¿ã€ã«ã®é
åãæ ŒçŽããå°ããªScriptableObjectãšã倧ããªãã¿ã€ã«ã®åèšç®ããã¿ã³ãåãããšãã£ã¿ãŒãäœæããŸãã
ééã£ãã¿ã€ã«ãåçæããããšã§ãããªãŽã³ãã¿ã€ã«ã«å
¥ããããã®ãã¹ãã§ããããŒãã«ãããŸããªç©Žã®åé¡ã解決ããããšã«ããŸããã ãªããªã äºåèšç®ãäžåºŠè¡ããŸãããšãã£ã¿ãŒã«æãå
¥ããŠãäœè£ããããŸãã :)
次ã«ããããã®ã¿ã€ã«ãç»é¢ã«è¡šç€ºããŸãïŒ
TodoïŒã¢ã¶ã€ã¯ã¿ã€ã«ã®äžè§åœ¢ãçæããŸãã
ã¬ãã«5.2.2ã ã¿ã€ã«ã¬ã³ããªã³ã°ã
ã¹ããããå®å
šã«äžžãããã®åº§æšãšååŸãããã£ãŠãããšããŸãã ãã®ã¹ãããå
ã«ãããã¹ãŠã®ããªãŽã³ãäœããã®æ¹æ³ã§ååŸããå¿
èŠããããŸãã ããã«ãæè²ã¯ä»»æã®åº§æšã«è¡šç€ºãããå¯èœæ§ããããããã¢ã¶ã€ã¯ããä»®æ³çã«ãã¿ã€ã«åããå¿
èŠããããŸãã
ã¢ã«ãŽãªãºã ã確èªããããã«ããã®ãããªãã¢ã¶ã€ã¯ããäœæããŸãããåé¡ãèŠã€ãããããªããŸãã
åœã®ã¢ã¶ã€ã¯
512ãã€ã³ãããçæãããã¢ã¶ã€ã¯ããããšããŸãã ãã®ãããåºåã¯512ããªãŽã³ã«ãªããåããªãŽã³ãšåãšã®äº€å·®ããã§ãã¯ããã®ã¯ã³ã¹ããããããããŸãã ãããã£ãŠãã¢ã¶ã€ã¯ãå°ããªé·æ¹åœ¢ã®ãããã¯ã®åœ¢ã§ä¿åããŸãã
ãããã¯åå²ã®èŠèŠåã
ã¢ã¶ã€ã¯ã®é¢ç©ãšããªãŽã³ã®æ°ããããã°ãæ€çŽ¢é床ãæ倧ã«ãªãæé©ãªãããã¯æ°ãååŸã§ããŸãã
ãããã£ãŠãæ€çŽ¢ããžãã¯ã¯æ¬¡ã®ãšããã§ãã
äžå¿åº§æšãšååŸradiusã®åãäžããããŸãã åã®äžã«ãããã¹ãŠã®ããªãŽã³ãèŠã€ããå¿
èŠããããŸãã
- AABBåãããAABBã«å
¥ãæåã®ãããã¯ãšæåŸã®ãããã¯ã®åº§æšãèšç®ããŸãïŒåº§æšå€ã¯0æªæºãŸãã¯è€æ°ã®è¡ã§ããå ŽåããããŸã-ã¿ã€ãªã³ã°ã®ãã1ïŒã
var rectSize = size / (float)rows; int minX = Mathf.FloorToInt((center.x - radius) / rectSize); int minY = Mathf.FloorToInt((center.y - radius) / rectSize); int maxX = Mathf.CeilToInt((center.x + radius) / rectSize); int maxY = Mathf.CeilToInt((center.y + radius) / rectSize);
- min max;
- , ;
- :
int innerX = ((x + rows) % rows + rows) % rows; int innerY = ((y + rows) % rows + rows) % rows;
- ;
- , ( ).
, , :
.
, â . :
, , . , , , {0, 0} {1, 1}, .
, :
- , ;
- ;
- .
:
:
Points = 500, Relax = 5
, .
:
Points = 500, Relax = 0
: , , , :
Triangles, Points = 500, Relax = 0
. , , , : , . - "", , :
.
, â . , : -:
.
: , . . , "" .
Todo: .
ãããã«
, . â , . , ( ), .
, :
- . ( ) , ;
- : , , . , . :)
- Unity3D , . â frame debug, , Unity3D ( msaa).
, , .
, feedback'a!