ããªãªã®ã¸ã£ã³ãå®è£ æ³ã¨Verletç©å(å®è·µç·¨)
å®éã«ãã£ã¦ã¿ã¾ããã(Canvasè¦ç´ ã使ã£ã¦ããã®ã§Firefoxã§ã©ãã)
http://eva-lu-ator.net/~gemma/geocities/jsmario/jsmario.html
ããªãªã®ããã«ã¸ã£ã³ãã§æ¾ç©ç·éåãããã²ã¼ã ãä½ãã¨ãã
ããã¦ãã¯ã座æ¨ã¨é度ã使ã£ã¦ç©çè¨ç®ããã¨æãã¾ããããã¯Euleræ³ã¨ããã¾ãã
Verletæ³ã§ã¯ã座æ¨ã¨ãååã®åº§æ¨ã使ã£ã¦è¨ç®ãã¾ããã¤ã¾ããé度ãè¨æ¶ãã¾ããã
Verletæ³ã§ã¯ã座æ¨ã ãæ±ãã°ããã®ã§ãå£ã«ãããããããããªãã¨ãã£ãæ¡ä»¶ãç°¡åã«æ¸ããã¨ãã§ãã¾ãã
åã«åº§æ¨ããå£ã®ç´åã«ããã ãã§ããã§ãã
ãã¿å
ã¯Cowboy Programming >> Blob Physicsã§ãã
ä»åã®ã³ã¼ãã®èã¯ä»¥ä¸ã®é¨åã§ããè¡çªå¤å®ããã£ããæ¸ãã¾ããã
//Verletæ³ var y_temp = Mario.y; Mario.y += clamp(Mario.y - Mario.y_prev - Mario.y_accel - GRAVITY, -MAX_SPEED_Y, MAX_SPEED_Y); Mario.y_prev = y_temp; if (Mario.y - Mario.y_prev < 0) { //䏿¹åã«é度ããããªãã° //é ã§è¡çªå¤å®ãã tx = Math.floor((Mario.x+8) / 16); ty = Math.floor( Mario.y / 16); //ãããã¯ããã£ãããyæ¹åã®ç§»åãå¶éãã if (Stage[ty][tx]) { Mario.y = ty * 16 + 16; };