ã»ããã¢ãããšæç»
q5.js (ãŸã㯠p5.js) ã® setup
颿°å
ã®ã³ãŒãã¯ãããã°ã©ã ã®éå§ãšãšãã«å®è¡ãããŸããupdate
颿°ã¯ãããã©ã«ãã§ã¯ 1 ç§éã« 60 åå®è¡ãããŸãã
new Canvas()
ã³ã³ã¹ãã©ã¯ã¿ã¯ãã¹ã¯ãªãŒã³å
ã«ããã°ã©ã ãæç»ã§ããé åãäœæããŸãã
ã³ãŒããµã³ãã«ã§ããã£ã³ãã¹ã®å¹
ãšé«ãïŒCanvas
ã³ã³ã¹ãã©ã¯ã¿å
ã®æ°åïŒã倿ŽããŠãããã°ã©ã ãåå®è¡ããŠã¿ãŸãããïŒ
ã¹ãã©ã€ãã£ãŠäœïŒ
ã¹ãã©ã€ããšã¯ãåŠç²Ÿãšããæå³ã®èšèã§ãïŒ
ãããªã²ãŒã éçºã®äžçã§ã¯ãèæ¯ã®äžãåããã£ã©ã¯ã¿ãŒãã¢ã€ãã ãªã©ã®è¡šç€ºç©ãæããŠãã¹ãã©ã€ãããšããèšèã䜿ããŸãã
new Sprite()
ã³ã³ã¹ãã©ã¯ã¿ã§ãã¹ãã©ã€ãã®ãªããžã§ã¯ããçæããŸããããã«ã¯ã¹ãã©ã€ãã®äœçœ®ããµã€ãºãããã³å€èгãå®çŸ©ããããããã£ãå«ãŸããŸãã
äžã®ã³ãŒããµã³ãã«ã§ãé·æ¹åœ¢ãšåã®ã¹ãã©ã€ãã®ããããã£ãç·šéããŠã¿ãŠãã ããïŒ
ãã£ãŠã¿ããïŒ
次ã®ã³ãŒããµã³ãã«ã§ã ball
ãšåä»ããããã¹ãã©ã€ããããçŽåŸ 30 ã®éãåã«å€ããŠããã£ã³ãã¹ã®å³äžã®è§ã«é
眮ããŠã¿ãŠãã ããã
ã¹ãã©ã€ãã®ç©çæå
ã¹ãã©ã€ãã®ã³ã©ã€ããŒïŒè¡çªãå€å®ããä»çµã¿ïŒã¯ã
ä»ã®ã¹ãã©ã€ããšã®ã³ãªãžã§ã³ïŒè¡çªïŒãæ€åºããããã«äœ¿çšãããŸãã
ã¹ãã©ã€ããããã©ã«ãã§æã€ DYNAMIC
ã³ã©ã€ããŒã¯ã
èªç±ã«ç§»åã§ããéåã®åœ±é¿ãåããããã³ã©ã€ããŒã§ãã
STATIC
ã³ã©ã€ããŒãæã€ã¹ãã©ã€ãã¯ãåãããŸããã
KINEMATIC
ã³ã©ã€ããŒãæã€ã¹ãã©ã€ãã¯ãããã°ã©ã çã«ç§»åãããããšãã§ããŸãããä»ã®ã¹ãã©ã€ãã®åœ±é¿ãåããŸããããŸããä»ã® kinematic
ã³ã©ã€ããŒãšãã³ãªãžã§ã³ãèµ·ãããŸããã
ã¹ãã©ã€ãã®ã³ã©ã€ããŒã NONE
ã«èšå®ãããšãã³ã©ã€ããŒãæã£ãŠããªãããšã«ãªããŸãã
ã³ã©ã€ããŒã®ã¿ã€ãã¯ã DYN
ã STA
ãããã³ KIN
ã®ããã«ãããããã®ã¿ã€ãåã®é æåã§æå®ããããšãã§ããŸãã
ã³ãŒããµã³ãã«ãåçããã«ã¯ãå³äžã®ãªããŒãã¢ã€ã³ã³ãã¯ãªãã¯ããŠãã ããïŒ
ãã£ãŠã¿ããïŒ
peg
ãšããååã§ãstatic ã³ã©ã€ããŒãæã€å圢ã®ã¹ãã©ã€ããäœæããŸããæ¬¡ã« block
ãšããååã§ã dynamic
ã³ã©ã€ããŒãæã€åè§ã®ã¹ãã©ã€ããäœæããŸãã peg ã«ã¶ã€ãã£ãŠå³åŽã«èœã£ãã¡ãããã«ã block ãé
眮ããŠã¿ãŠãã ããã
q5.js ã® draw
颿°ãå®è¡ããããã³ãã¹ãã©ã€ãã¯èªåçã«æç»ã»æŽæ°ãããŸãã world
㯠p5play
ãããŒãããããšãã«çæãããŸãããããã©ã«ãã§ã¯éåã¯èšå®ãããŸããã world.gravity.y
ãæ£ã®æ°ã«èšå®ããŠã¿ãŸãããã
ããã«ææŠãããæ¹ã¯ããããã¯ãèœã¡ãåŸã«å ã®äœçœ®ã«æ»ãããã«ããŠã¿ãŠãã ããã
ç»åä»ãã¹ãã©ã€ã
sprite.image
ãŸã㯠sprite.img
ã«ãq5.Image
ç»åãªããžã§ã¯ããã®ãã®ããŸãã¯ç»åãã¡ã€ã«ãžã® URL ãã¹ãèšå®ããããšã§ãã¹ãã©ã€ãã«æå®ããç»åãå²ãåœãŠãããšãã§ããŸãã
ç»åã®èªã¿èŸŒã¿ãå®äºããŠããããã°ã©ã ãéå§ãããããšããå Žåã¯ã q5.js ã® preload
颿°ã§ loadImage
ã䜿çšããã®ããã¹ãã§ãã
sprite.image.offset
ã¯ãç»åãã¹ãã©ã€ãã®äžå¿ã«å¯ŸããŠãªãã»ãããããããã«äœ¿çšã§ããŸããããã«ãããç»åãã¹ãã©ã€ãã®ç©ççãªè¡çªå€å®ãšããããæŽåãããããšãã§ããŸãã
ã³ãŒããµã³ãã«ã®ç»åã®äžã§ãããŠã¹ã®å·Šãã¿ã³ãæŒããŠã¿ãŠãã ããã sprite.debug
ããããã£ã true
ã«èšå®ããããšãã¹ãã©ã€ãã®ã³ã©ã€ããŒéšåãèŠããããã«ãªããŸããããã§åããéããã³ã©ã€ããŒã®å€§ãããšç»åã®å€§ããã¯ãå¥ã
ã«èšå®å¯èœãªã®ã§ãïŒ
ã¹ãã©ã€ãã®opacity
ïŒäžéæåºŠïŒãèšå®ããŠãèŠãç®ã®éæåºŠã倿Žã§ããŸãã0ïŒå®å
šã«éæïŒãã 1ïŒå®å
šã«äžéæïŒãŸã§ã®å€ã䜿çšããŸãã
sprite.image.scale
ã¯ãã¹ãã©ã€ãã®ç»åã®è¡šç€ºãµã€ãºã倿ŽããŸããããã©ã«ã㯠1.0
ã§ããç»åãéåžžã«å€§ãããããå°ããããå Žåã¯ãããããç»åãã¡ã€ã«èªäœã®ãµã€ãºã倿Žããå¿
èŠããããŸãã
çµµæåã¹ãã©ã€ã
ãããŒçšã®ç»åããæå ã«ãªãïŒ ð«¥ ãå®å¿ãã ããïŒ ð
ã奜ããªçµµæåãã©ã³ãããã¹ãã©ã€ãã®ç»åãšããŠäœ¿çšã§ããŸãã
ç»åãšããŠã®çµµæåã®ãµã€ãºã¯ãã¹ãã©ã€ãã®ãµã€ãºã«åºã¥ããŸãããµã¯ããšãããã¿ã€ãã³ã°ãæžãŸããã®ã«æé©ã§ãïŒ ð§ª
ãã¯ã»ã«ã¢ãŒã
spriteArt
颿°ã§ãã¹ãã©ã€ãçšã®ãã¯ã»ã«ã¢ãŒãç»åãäœæã§ããŸãããã®é¢æ°ã¯æååãåŒæ°ãšããŠåãåããç»åãè¿ããŸããæååå
ã®åæåã¯ãç»åå
ã®ãã¯ã»ã«ã®è²ã衚çŸããŠããŸãã
spriteArt
颿°ã®ç¬¬ 2 åŒæ°ã¯ãç»åã®ã¹ã±ãŒã«å€ïŒåçïŒã§ãã
ãã£ãŠã¿ããïŒ
ã³ãŒããµã³ãã«ã§ãããªããªãªãžãã«ã®ãã¯ã»ã«ã¢ãŒããäœã£ãŠã¿ãŸãããïŒ äžã®ã¢ã«ãã¡ããããåèã«ããã°ãåã¢ã«ãã¡ãããã«ã¯ããã©ã«ãã§ã©ã®è²ãå²ãåœãŠãããŠãããã確èªã§ããŸãã
ã«ã¹ã¿ã ã«ã©ãŒ
ããã«ããã«ã©ãŒãã¬ããããäœæããŠãspriteArt
颿°ãžã®ç¬¬ 3 åŒæ°ã«æž¡ãããšã§ãã«ã¹ã¿ã ã«ã©ãŒã䜿ã£ããã¯ã»ã«ã¢ãŒããäœæããããšãã§ããŸãã
p5play ã®ã«ã©ãŒãã¬ããã¯JavaScript
ãªããžã§ã¯ã圢åŒã§ãªããã°ãªããŸãããã·ã³ãã«ãª JS
ãªããžã§ã¯ããšã¯ãèŠåºããšå€ã®ãã¢ã®éãŸãã§ãããã¯ã»ã«ã¢ãŒãã§äœ¿çšããããããã®æåã«å¯Ÿããä»»æã®è²ãå®çŸ©ããããšãã§ããŸããè²ãäœæããã«ã¯ãq5.js ã®color
颿°ã«ã RGBïŒèµ€ãç·ãéïŒå€ããŸãã¯
HEX ã«ã©ãŒã³ãŒããåŒæ°ãšããŠæž¡ããŸãã
è²ã®æå®å€ã調ã¹ãã«ã¯ãã«ã©ãŒããã«ãŒã䜿ãã®ããã¡ã°ããæè»œã§ãã
ã¹ãã©ã€ãã®ç§»å
ã¹ãã©ã€ããç§»åãããããšããŠãåº§æš (x, y) ãçŽæ¥ç·šéãããšãå³åº§ã«æå®ãã座æšãžãšããã¬ããŒããããŸããç§»åã®éäžçµéã®åº§æšã瀺ãããšã¯ãããŸããã
ãã®ã³ãŒããµã³ãã«ãã¯ãªãã¯ããŠã¿ãŠãã ããã
ã¹ãã©ã€ãã®ç§»åäžã«ãä»ã®ã¹ãã©ã€ããšç©ççã«å¹²æžããããå Žåã¯ãããã¬ããŒãããè¡ã£ãŠã¯ãããŸããïŒ
ãã®ã³ãŒããµã³ãã«ã¯ãæªãäŸã§ãã q5.js ã® draw 颿°ã«ãããã¬ãŒã æ¯ã®ã¬ã³ããªã³ã°ãå©çšããŠãç§»åãã¹ãã©ã€ãã®ããã¬ããŒããã§è¡šçŸãããšãã©ããªãã®ã瀺ããŠããŸãã
ãã®ããŒãžã®ã以éãã¹ãŠã®èª¬æã¯ãç§»åã®æ¹æ³ãšããŠã¹ãã©ã€ãã® x 軞㚠y 軞ã®ç§»åé velocity
ïŒããã·ãã£ïŒãå¥å vel
ã倿Žããããšã«ãã£ãŠè¡ã£ãŠããŸãã
vel
㯠q5.js ã® Vector ãªããžã§ã¯ãã§ãããä»»æã®ãã¯ãã«é¢æ°ã䜿çšå¯èœã§ãã
ãã®ã³ãŒããµã³ãã«ãåå®è¡ããŠããã¬ã€ã€ãŒã®ã¹ãã©ã€ãããããã¯ã«ã¶ã€ããæ§åãã芧ãã ããïŒ
å Žåã«ãã£ãŠã¯ãã¹ãã©ã€ãã®ç§»åã«ã¯ã direction
ïŒæ¹åïŒãš speed
ïŒé床ïŒãèšå®ããã»ãã䟿å©ãããããŸããã
æ¹åã¯ãè§åºŠãæå®ãããã 'up', 'down', 'left', 'right', 'upLeft', 'upRight', 'downLeft', 'downRight' ãšãã£ãæ¹ååã䜿ã£ãŠèšå®ã§ããŸãã
move
颿°ã¯ãã¹ãã©ã€ãã®ç§»åãããçŸåšã®äœçœ®ããã®è·é¢ãã§æå®ããŸããæ¹åãšé床ã¯ã颿°ã®åŒæ°ãšããŠæå®ããããšããåã®äŸã®ããã«å¥ã
ã«èšå®ããããšãã§ããŸãã
moveTowards
颿°ã¯ãã¹ãã©ã€ããç¹å®ã®äœçœ®ã«åããŠãçŸåšã®äœçœ®ãšã®è·é¢ãšã®ããŒã»ã³ãã¶ãç§»åãããŸãã
ãã®ã³ãŒããµã³ãã«ã§ã¯ããã¬ã€ã€ãŒã¯ q5.js ã® draw åŒã³åºãæ¯ã«ãããŠã¹ãŸã§ã®è·é¢ã® 10ïŒ ã¶ãç§»åããŸãããã®ã¹ããŒããšããããã¯ã匟ãé£ã°ãåã¯ãç§»åããè·é¢ã«æ¯äŸããŸãã
moveTo
颿°ã¯ã¹ãã©ã€ãããäžå®ã®é床ã§ç¹å®ã®äœçœ®ã«ç§»åããããæšé²åãïŒã€ã³ãã«ã¹ïŒãçºçãããããšã§ãç§»åãããŸãã
ããããç§»åäžã«ãã®ã¹ãã©ã€ãããéåãªã©ã®å€åã®åœ±é¿ãåããããä»ã®ã¹ãã©ã€ãã«ã¶ã€ãããªã©ãããšããã®åœ±é¿ã«ãã£ãŠæå®ããäœçœ®ã«å°éããªãå¯èœæ§ãããããšã«æ³šæããŠãã ããã
ãx ãš y ãããããã£ãšããŠæã€ãªããžã§ã¯ãããåŒæ°ã«ãããã¹ãŠã®ç§»å颿°ã¯ã (x, y) ã®åº§æšæ°å€ã䜿çšããŠåŒã³åºãããšãã§ããŸãã
ãã®ããŒãžã§ç€ºããäŸãã p5play ã§å©çšå¯èœãªãã¹ãã©ã€ãã®ç§»åææ®µãã®ããã€ããçè§£ããå©ãã«ãªã£ãããšãé¡ã£ãŠããŸãïŒ
ãã ãã move
ã moveTo
ãããã³ moveTowards
颿°ã¯ãã¹ãã©ã€ãã®çŸåšã®åãã匷å¶çã«äžæžãããæ°ããªæ¹åã«åããããšããããšã«ã¯æ°ãã€ããŠãã ããããã®ããšã¯ãå¿
ãããæãŸããçµæãçããšã¯éããªãããã§ãïŒ
éåãªã©ãå€åãèæ
®ã«å
¥ããã¹ãã©ã€ãç§»åã®æ¹æ³ãåŠã¶ã«ã¯ããé«åºŠãªç§»åããåç
§ããŠãã ããã
ã¹ãã©ã€ããææ©ãäœã
new Sprite()
ã³ã³ã¹ãã©ã¯ã¿ã®åŒæ°ã§ãã¹ãã©ã€ãã®äœçœ®ããµã€ãºãã³ã©ã€ããŒã®ã¿ã€ããçŽæ¥æå®ã§ããŸãã
ãããŸã§ã®èª¬æããŒãžã§èŠãéããã¹ãã©ã€ããçæããã ããªãã Sprite ã³ã³ã¹ãã©ã¯ã¿ã«åŒæ°ãäžããå¿ èŠã¯ãããŸãããããããã³ã³ã¹ãã©ã¯ã¿åŒæ°ã§ã¹ãã©ã€ãã®ãµã€ãºãäžãããå Žåã¯ãããããããã®åº§æšãæå®ããå¿ èŠããããŸãã
ããã©ã«ãã§ã¯ãSprite ã³ã³ã¹ãã©ã¯ã¿ã空ã®å Žåãçæãããã¹ãã©ã€ãã¯ãäœçœ®ããã£ã³ãã¹ã®äžå€®ãå¹ ãšé«ãã 50 ãã¯ã»ã«ã§ã dynamic ã³ã©ã€ããŒãæã¡ãŸãã
ãã£ãŠã¿ããïŒ
new Sprite()
ã³ã³ã¹ãã©ã¯ã¿ã«åŒæ°ãäžããããšã§ã 2 ã€ã®ã¹ãã©ã€ããäœæããŠã¿ãŠãã ããã
ã³ãªãžã§ã³
ã³ãªãžã§ã³å€å®ã«ã¯ã q5.js ã® draw
颿°ã®äžã§ã以äžã«ç€ºã颿°ã䜿çšããŸãã
ã¹ãã©ã€ããå¥ã®ã¹ãã©ã€ããšã®ã³ãªãžã§ã³ãçºçãããæåã®ãã¬ãŒã ã§ã¯ãcollides
颿°ã¯ true ãè¿ããŸãã
ã¹ãã©ã€ããå¥ã®ã¹ãã©ã€ããšã³ãªãžã§ã³ãèµ·ãããŠããéãcolliding
颿°ã¯ã³ãªãžã§ã³ïŒè¡çªãããã¯æ¥è§ŠïŒãçºçããŠãããã¬ãŒã æ°ãè¿ããŸãã
2 ã€ã®ã¹ãã©ã€ãã®ã³ãªãžã§ã³ãçµäºããæåã®ãã¬ãŒã ã§ã¯ãcollided
颿°ã¯ true ãè¿ããŸãã
ãªãŒããŒã©ãã
ã¹ãã©ã€ãã¯ããã©ã«ãã§ã¯ã³ãªãžã§ã³ãèµ·ãããŸãããéãªãïŒãªãŒããŒã©ããïŒããšãã§ããŸãïŒ
ããã©ã«ãã§ã¯ãã¹ãã©ã€ãã¯çæãããé çªã«æç»ãããŸãã
ã¬ã€ã€ãŒ
æç»ã®é åºã倿Žããã«ã¯ãã¹ãã©ã€ãã® .layer
ããããã£ãç·šéããŸãã layer ã®å€ãé«ãã¹ãã©ã€ããæåã«ãäœãã¹ãã©ã€ãã¯ãã®åŸãã«ãé ã«æç»ãããŸãã
ãªãŒããŒã©ããå€å®ã«ã¯ã q5.js ã® draw
颿°ã®äžã§ã以äžã«ç€ºã颿°ã䜿çšããŸãã
ã¹ãã©ã€ãå士ã®ãªãŒããŒã©ãããçºçããæåã®ãã¬ãŒã ã§ã¯ãoverlaps
颿°ã¯ true ãè¿ããŸãã
ã¹ãã©ã€ãå士ã®ãªãŒããŒã©ãããç¶ç¶ããŠããéãoverlapping
颿°ã¯ç¶ç¶ããŠãããã¬ãŒã æ°ãè¿ããŸãã
ã¹ãã©ã€ãå士ã®ãªãŒããŒã©ãããçµäºããæåã®ãã¬ãŒã ã§ã¯ãoverlapped
颿°ã¯ true ãè¿ããŸãã
ã¹ãã©ã€ãéã®ç©çæåïŒã³ãªãžã§ã³ããªãŒããŒã©ãããå«ãïŒã¯ãã¹ãã©ã€ããããã¬ããŒããããããšæ£ããæ€åºãããªãããšã«æ³šæããŠãã ããã ã¹ãã©ã€ããããã¬ããŒããããããšããã®åº§æšãçŽæ¥å€æŽãããããã§ãïŒ
remove
颿°ã§ããã®ã¹ãã©ã€ããåé€ããŸãã
ãã£ãŠã¿ããïŒ
éãã¹ãã©ã€ããèµ€ãã¹ãã©ã€ããšãªãŒããŒã©ããããŠããéã ããèµ€ã«å€ããããã«ããŠã¿ãŠãã ããã
ãªãŒããŒã©ãããšã³ãªãžã§ã³ãšãåãæ¿ãã
ïŒã€ã®ã¹ãã©ã€ãéã«ãªãŒããŒã©ããé¢ä¿ãèšå®ãããšããããã¯ã³ãªãžã§ã³ãèµ·ãããªããªããŸããã collides
颿°ã䜿ãããšã§ãåã³ã³ãªãžã§ã³é¢ä¿ãšããäºãã§ããŸãã
ãã®ã³ãŒããµã³ãã«ã§ã¯ãã¹ããŒã¹ããŒãæŒããŠããéã ãããã¬ã€ã€ãŒã¯å£ãšãªãŒããŒã©ããé¢ä¿ã«ãªããå£ãããæããããšãã§ããŸãã
ããŒããŒã·ã§ã³
ã¹ãã©ã€ãã® rotation
ïŒå転è§ïŒããŒããŒã·ã§ã³ïŒããããã£ãçŽæ¥å€æŽãããšãæå®ãããå転è§ãžããã¬ããŒããããŸãã
ç§»åã«ãããã座æšã®ãã¬ããŒããåæ§ãå転ã«ããä»ã®ã¹ãã©ã€ããšã®ç©çæåãæããªããå転è§ã®çŽæ¥å€æŽãã€ãŸããå転è§ã®ãã¬ããŒããã¯å³çŠã§ãïŒ
ãã®ããŒãžã®ä»ã®ãã¹ãŠã®å転ã¡ãœããã¯ãã¹ãã©ã€ãã® rotationSpeed
ã倿Žããããšã§è¡ãªã£ãŠããŸãã
rotate
颿°ã䜿çšãããšãã¹ãã©ã€ãã®åããããã®æç¹ã§ã®è§åºŠããã第 1 åŒæ°ã§æå®ããè§åºŠã¶ãå転ãããŸãïŒæ£æ°ã¯å³åããžã®ãè² æ°ã¯å·Šåããžã®è§åºŠãæå®ããŸãïŒã
第 2 åŒæ°ãæå®ããããšã§ãã¹ãã©ã€ãããã¬ãŒã ïŒç»é¢ã®æŽæ°é »åºŠãããã©ã«ãã§ã¯ 1/60 ç§ïŒããšã«äœåºŠå転ããã®ããã€ãŸãåãéãã倿Žã§ããŸãã
rotateTo
颿°ã䜿çšãããšãã¹ãã©ã€ãã®åããããã®æç¹ã§ã®è§åºŠã«ããããããæå®ããè§åºŠã«å転ãããŸãïŒçäžã 0
床ãšãããå³åãã®è§åºŠã§æå®ããŸããè² æ°ãæå®å¯èœã§ããã®å Žåã¯å·Šåãã®è§åºŠæå®ãšãªããŸãïŒã rotateMinTo
颿°ã¯ãã¹ãã©ã€ããæå°ã®åãã§ç®æšã«æ£å¯Ÿãããããå¿
èŠã«å¿ããŠå転æ¹åã倿ŽããŸãã第 3 åŒæ°ãäžããå Žåãç®æšã«åãã£ãŠã©ã®ãããã®è§åºŠã§ãæ£å¯Ÿãã ("facing") ãã®ããæå³ããŸãïŒ
0 ã§çã£æ£é¢ã«ãªããŸãïŒã
詊ãã«ããã®ã³ãŒããµã³ãã«ã䜿ã£ãŠããæ£å¯Ÿãããè§åºŠã 0 ãã 90 ã«å€æŽããŠã¿ãŸãããã倿Žåã«ãµã³ãã«ãã¯ãªãã¯ãããšãé·æ¹åœ¢ã¯ãã®ç蟺ãããŠã¹ã«ãŒãœã«ã«åããŠããŸãããã倿ŽåŸã«ã¯é·èŸºãåããããã«ãªããŸãã
rotateTowards
颿°ã¯ãã¹ãã©ã€ãã®åããã第 1 åŒæ°ã«å¿ããŠå€æŽããŸãã第 1 åŒæ°ãæ°å€ã§ããã°ãã®è§åºŠãäœçœ®ãªããžã§ã¯ããªãããã«æ£å¯Ÿããè§åºŠã§ãã
第 2 åŒæ°ãæå®ããããšã§ããåãçŽãéããã倿Žã§ããŸããæå®æ¹æ³ã¯ãåãã¬ãŒã æç¹ã§ãã¹ãã©ã€ããç®æãè§åºŠãšã®çŸåšã®è§åºŠãšã®å·®ã®ãçŸåçïŒããŒã»ã³ãïŒãã§ããããã©ã«ãã§ã¯ 0.1ïŒ10%ïŒã§ãã
offset
ããããã£ã® x
ããã³ y
å€ãç·šéãããšãã¹ãã©ã€ãã®ã³ã©ã€ããŒããã¹ãã©ã€ãã®äžå¿ç¹ããæå®ããéã ããããããäºãã§ããŸãã
sprite.debug
ã true ã®ãšããç·è²ã®ç·ã§ã¹ãã©ã€ãã®ã³ã©ã€ããŒããå°ããªç·è²ã®ååç·ã§ã¹ãã©ã€ãã®äžå¿ç¹ãããããã衚瀺ãããŸããäžå¿ç¹ãšã¯ãã¹ãã©ã€ãã®
x, y 座æšã§ãããŸãäžå¿ç¹ã¯ãå転軞ã§ããããŸãã
ã¹ã±ãŒãªã³ã°
sprite.scale
ã倿Žãããšãæå®ãããåçã§ã¹ãã©ã€ãã®ã³ã©ã€ããŒãšèŠèŠçãªå€èгãã¹ã±ãŒãªã³ã°ïŒæ¡å€§/çž®å°ïŒãããŸãã
ã³ãŒããµã³ãã«äžã§æ°åããŒãæŒããšãã¹ãã©ã€ãããã®éã ãåäžã«ã¹ã±ãŒã«ããŸãã
ããŠã¹ã¯ãªãã¯ãŸãã¯ã¿ããã§ãã¹ãã©ã€ãã®ã¹ã±ãŒã«ãåã«ãªããŸãã
"x" ããŒãŸã㯠"y" ããŒãæŒããšãã¹ãã©ã€ãããã®æ¹åã«ã©ã³ãã ãªéã ãã¹ã±ãŒã«ããŸãããã ããã¹ãã©ã€ããäžåçã«ã¹ã±ãŒãªã³ã°ãããå Žåãç»åã¯æªãã§ããŸãããã®åŸã§åäžãªã¹ã±ãŒãªã³ã°ã詊ã¿ãŠããæªã¿ã¯ãã®ãŸãŸã§ãã
ç©çæåã®å±æ§
ã¹ãã©ã€ãã«ã¯ãã¯ãŒã«ããšã®çžäºäœçšã«åœ±é¿ãäžããç©çæåã®å±æ§ããããŸãããããã®å±æ§ãã©ã®ããã«äœçšãããã¯ããã®ããŒãžã®ã³ãŒããµã³ãã«çŸ€ãã芧ãã ããã
質é
ããã©ã«ãã§ã¯ãmass
ïŒè³ªéïŒã¯ã¹ãã©ã€ãã®ãµã€ãºã倧ããã»ã©å€§ãããªããŸããã¹ãã©ã€ãã®ãµã€ãºãæåã«å®çŸ©ãããæç¹ã§ããã®è³ªéãèšç®ãããŸãã
ãããçŸå®äžçã§ã¯ãç©äœãåŒã䌞ã°ãããæŒãã€ã¶ãããã質éãå€ããããšã¯ãããŸããããªã®ã§ã p5play
ã§ã¯ã¹ãã©ã€ãã®ãµã€ãºãããšãã倿ŽããŠãã質éã¯å€ãããŸãããã¹ãã©ã€ãã®ãµã€ãºã倿ŽããåŸã«è³ªéãåèšç®ããã«ã¯ã resetMass
颿°ã䜿ããŸãã
ãã£ãŠã¿ããïŒ
ãã®ã³ãŒããµã³ãã«ã¯ãç°ãªã倧ããã®ã¹ãã©ã€ããã質éãåãå€ã«èšå®ããå Žåãã·ãŒãœãŒã®äžã§ã©ã®ããã«ãã©ã³ã¹ããšããã瀺ããŠããŸããã§ã¯ãã¹ãã©ã€ãã®äžããäžã€ã ãã質éã倿ŽããŠã¿ãŠãã ããã
planck ã®ãã°
p5play ã¯ã Box2D ç©çãšã³ãžã³ã® JS ç§»æ€çã§ãã planck.js ã䜿çšããŠããŸãããã®ãšã³ãžã³ã¯ãªã¢ã«ãªã€ã³ã¿ã©ã¯ã·ã§ã³ãé«ãããã©ãŒãã³ã¹ã§å®çŸããŸãããæ³šæãã¹ãå¶éããããŸãã
ãã®ã³ãŒããµã³ãã«ã§ã¯ãããŒã«ã® bounciness
ïŒè·³ãè¿ãä¿æ°ïŒã 1 ãªã®ã§ãããŒã«ãããŠã³ããããã³ã«ãããã¯ãã®éå§äœçœ®ã«æ»ãã¯ãã§ããããããplanck
ã®ãã°ã«ãããããŒã«ã¯å°é¢ã§åŒŸããã³ã«è·³ãè¿ããå¢å ãããã ãã«é«ãè·³ããããã«ãªããŸãã
ãã®å®å šåçºã®æåã¯ãçŸå®äžçã§ã¯èµ·ããåŸãŸãããããããªã²ãŒã ã§ã¯éèŠãªèŠçŽ ã§ããã¯ãã§ãã
ããããã® bounciness
ã®ãã°ã¯ãããã®äŸã®ããã«ãç©äœãå°é¢ãªã©ã®ãã©ãããªé¢ããããŠã³ããããšãã«ç¹ã«ç®ç«ã£ãŠããŸããŸãã
åé¿çãšããŠãèœäžããããŒã«ãå°é¢ãšã³ãªãžã§ã³ãèµ·ãããçŽåŸã«ã y æ¹åã®ããã·ãã£ãäžæžãããæ¹æ³ãã玹ä»ããŸãã
次ã®ã³ãŒããµã³ãã«ã§ã¯ããããã¯ãšåãåºãã³ãªãžã§ã³ãçºçããããšãããããã¯ã«èµ€ãè²ãã€ããããã«ããŠããŸããåºã«ãã£ãŠãããã¯ãæã¡äžããããŠããéã®ã³ãªãžã§ã³ã¯ãæèŠçã«ã¯è¡çªã§ã¯ãªããæ¥è§Šããªã®ã§ãããããããã¯ãèµ€è²ã®ãŸãŸã§ããããšãæåŸ ããã§ãããããããã芧ã®ãšããããããã¯ã¯èµ€ãšéã§ç¹æ» ããã®ã§ãã
çŸå®äžçã§ã¯ã人ããšã¬ããŒã¿ãŒã«ä¹ã£ãŠäžæãããšããã®äººãšãšã¬ããŒã¿ãŒã®åºãšã®ã³ãªãžã§ã³ã¯ãæ¥è§Šãã§ãããšã¿ãªãã¯ãã§ãã
ãããã planck ã§ã¯ãã³ã©ã€ããŒãä»ã®ã³ã©ã€ããŒã«ãã£ãŠç§»åããããããšãããããã¯ãæ¥è§Šã®ç¶ç¶ãã§ã¯ãªãããã³ãªãžã§ã³ã®çºçããšãã³ãªãžã§ã³ã®çµäºããæ¿ããç¹°ãè¿ãããŠãããšã¿ãªãããŸãã
ãããã©ãããã©ãŒããŒã²ãŒã ãäœãå Žåãã¹ãã©ã€ãããã©ãããã©ãŒã ã«ç«ã£ãŠãããã©ããã®å€å®ã« colliding
颿°ã䜿ãã®ã¯ããããã§ããŸãããããè¯ãæ¹æ³ãšããŠãç§ãã¡ã®ãã©ãããã©ãŒããŒãã¢ã®ã³ãŒãããã§ãã¯ããŠã¿ãŠãã ããã
é«åºŠãªç§»å
move
颿°ã¯åŒ·å¶çã«ãã¹ãã©ã€ãã®é床ãäžæžãããŸããããããã¹ãã©ã€ããéåãªã©ã®å€åãèæ
®ããå¿
èŠãããå Žåã¯ã©ãããã°è¯ãã§ããããïŒ
ãã®ããã®ããããã£ãã bearing
ïŒæ¹äœè§ïŒãã¢ãªã³ã°ïŒã§ãããã¢ãªã³ã°ãšã¯ããç¹å®ã®äœçœ®ã«å°éããããã«ãåããããã¹ãè§åºŠããšããæå³ã®èšèã§ãã
ããããã¹ãã©ã€ãã® bearing
ã倿ŽããŠããå³åº§ã«ç§»åæ¹åã倿Žãããããã§ã¯ãããŸããã applyForce
颿°ã®åŒæ°ã«ãåã®éãäžããããšã§ãåã㊠bearing
ã®è§åºŠãžã®åãå ãããŸãã
ãã®ã³ãŒããµã³ãã«ã§ã¯ããããŒã³ã¯éåã«éãã£ãŠé£ã°ãªããã°ãªããŸãããã¯ãªãã¯ããŠãããŒã³ãé£ã°ããããããèœäžãããå床ãããŒã³ã«äžåãã®åãå ãããšãèœäžã¯åŸã ã«æ¢ãŸããé£ã³å§ããŸãïŒ
applyForceScaled
颿°ã¯ãã¹ãã©ã€ãã«å ããåã«ã質éãæãåãããŸãã
ãã®é¢æ°ã䜿çšããŠãåã¹ãã©ã€ãã«å¯Ÿããç°ãªãæ¹åã»åŒ·ãã§ãéåãäžããããšãã§ããŸãïŒ
applyForce ãš applyForceScaled ãäž¡æ¹ã®é¢æ°ãšãã x ãš y ã®æåãïŒã€ã®åŒæ°ãšããŠäžãããããããã¯ã¹ãã©ã€ãã« bearing
ããããã£ãããã°ãéæåãšããïŒã€ã®åŒæ°ãäžããããšã§èšå®ã§ããŸãïŒè£è¶³: ã¹ãã©ã€ãã« bearing
ããããã£ããªãã®ã«ãåŒæ°ãïŒã€ããäžããªãã£ãå Žåã¯ã(x,
0) ãäžãããããã®ãšã¿ãªãããŸãïŒã
ããã©ã«ãã§ã¯ãåã¯ã¹ãã©ã€ãã®éå¿ã«ããããŸãããã ãã applyForce
ããã³ applyForceScaled
颿°ã¯ãæåŸã®åŒæ°ãšããŠãx, y ããããã£ãå®è£
ããäœçœ®ããžã§ã¯ããåãä»ããŸãããã®äœçœ®ãªããžã§ã¯ãã® x, y
ã¯ãã¹ãã©ã€ãã®éå¿ããã®çžå¯Ÿäœçœ®ã瀺ããã®ã§ãã¹ãã©ã€ãã®ã©ã®äœçœ®ã«åããããã®ãã¯ãããã«ããæ±ºå®ããŸãã
attractTo
颿°ã¯ããã®ã¹ãã©ã€ãã«ã察象ã®äœçœ®ã«åŒãå¯ããããåãå ããŸãããã®é¢æ°ã¯ãx, y ããããã£ãå®è£
ããïŒã€ã®äœçœ®ããžã§ã¯ãã§ãã座æšã x ãš y
ã®ïŒã€ã®æ°åã§ããã©ã¡ãã§ãåŒæ°ãšããŠåãä»ããŸãã
ãã®äŸã§ã¯ãé»åãååæ žã®åšããè»éãæããŠããæ§åãã·ãã¥ã¬ãŒã·ã§ã³ããŠããŸãïŒãã®èŠèŠçã¢ãã«ã¯ãçŸä»£ç§åŠã®ç ç©¶ã«åºã¥ãããã®ã§ã¯ãããŸãããã§ããã€ã«ãã§ããïŒïŒã
ãªãããã®ããŒãžã§ç€ºãããŠããé«åºŠãªåäœé¢æ°ã¯ãã¹ãªãŒãã³ã°ã¹ãã©ã€ã ããç®èŠãããããããšã¯ãããŸããã
Torque ïŒãã«ã¯ïŒãšã¯ã転ãããåŒãèµ·ããåã®ããšã§ããã¹ãã©ã€ããèªç¶ã«è»¢ããããã«ããã«ã¯ applyTorque
ã䜿ããŸãã
ãã®äŸã®ããã«ãããããã®è»¢ããã¯ãäžãåã®ã»ããäžãåãããé ããªããŸãã
ãã§ã€ã³ã³ã©ã€ããŒ
ãã§ã€ã³ã³ã©ã€ããŒã«ã¯ 3 ã€ã®ç°ãªãã¢ãŒãããããŸãïŒ vertex
ã distance
ãããã³ line
ã§ãã
vertexïŒé ç¹ïŒ ã¢ãŒãã䜿çšããã«ã¯ã Sprite ã³ã³ã¹ãã©ã¯ã¿ã«é ç¹ã®é åãæž¡ããŸããåé ç¹ã®é åã¯ã [x, y] 座æšãå«ãŸãã°ãªããŸããããããã®ã³ãŒããµã³ãã«ã§ã¯ãã¹ãã©ã€ãã®(x, y)äœçœ®ããå°ããªé»ãåè§ã§åŒ·èª¿è¡šç€ºããŠããŸãã
ã³ãŒããµã³ãã«ã®ãã§ã€ã³ã¹ãã©ã€ãã®é ç¹ã倿ŽããŠãããŒã«ãåºã«çãŸãããã«ããŠã¿ãŸãããïŒ
distance ïŒè·é¢ïŒã¢ãŒãã䜿çšããã«ã¯ã Sprite ã³ã³ã¹ãã©ã¯ã¿ã«ãïŒã€ã® (x, y) 座æšãšãã distance ã®é åãã®é åãæž¡ããŸãããããã®é åã¯ãåã®é ç¹ããã®çžå¯Ÿ [x, y] ã®å·®åã®é£ç¶ã§ããæåã® (x, y) 座æšã¯ããã§ã€ã³ã®æåã®é ç¹ã«ãªããŸãã
distance ã¢ãŒãã¯ããšãŠãé·ããã§ã€ã³ãäœæããã®ã«æé©ã§ãã
ããã§ã¯ããã®ã³ãŒããµã³ãã«ã« 5 ã€ã® distance ã远å ããŠãå²©å Žã®ãã³ãã³éã®ãã§ã€ã³ãããŒã«ã転ãããããªå°é¢ãäœã£ãŠã¿ãŸãããã
line ïŒçŽç·ïŒã¢ãŒãã䜿çšããã«ã¯ã Sprite ã³ã³ã¹ãã©ã¯ã¿ã« (x, y) äœçœ®ãšç·ã®é·ããšè§åºŠã®é åãæž¡ããŸããåè§åºŠã¯ãçŽåã®ç·ã®è§åºŠã«å¯Ÿããçžå¯Ÿå€ã§ãã
line ã¢ãŒãã¯ãå°ãããã§ã€ã³ã察称çãªåœ¢ã®ãã§ã€ã³ã«æé©ã§ãã
line ã¢ãŒããã§ã€ã³ã® (x, y) 座æšã¯ãå šãŠã®é ç¹åº§æšã®ã¡ããã©å¹³åã®å°ç¹ã§ãããå¿ ããããã§ã€ã³äžã®ããããã®é ç¹ãæãããã§ã¯ãããŸããã
ããã§ã¯ãã³ãŒããµã³ãã«ã®ç·ã®é·ããšè§åºŠã倿ŽããŠã¿ãŠãã ããïŒ
ããªãŽã³ã³ã©ã€ããŒ
éåžžã®ããªãŽã³ã¯ã Sprite ã³ã³ã¹ãã©ã¯ã¿ã«ãäžèŸºã®é·ããšãããªãŽã³åããæž¡ãããšã§çæã§ããŸãã
ããªãŽã³åãšããŠäœ¿çšã§ããæååã¯æ¬¡ã®éãã§ã: 'triangle'
(äžè§åœ¢)ã 'square'
(åè§åœ¢)ã
'pentagon'
(äºè§åœ¢)ã 'hexagon'
(å
è§åœ¢)ã 'septagon'
(äžè§åœ¢)ã
'octagon'
(å
«è§åœ¢)ã 'enneagon'
(ä¹è§åœ¢)ã 'decagon'
(åè§åœ¢)ã
'hendecagon'
(åäžè§åœ¢)ã 'dodecagon'
(åäºè§åœ¢)ã
ãã§ã€ã³ã®å§ç¹ãšçµç¹ãåã座æšã§ããã€ãçµæãšããŠåžå€è§åœ¢ãšãªã£ãŠããã°ãããã¯èªåçã«ããªãŽã³ãšãªããŸãïŒ
ã¹ãã©ã€ããåžå€è§åœ¢ã®ããªãŽã³ãªã sprite.shape = 'chain'
ã§ã匷å¶çã«ãã§ã€ã³ã«å€æã§ããŸãã
ãã¹ãŠã®ããªãŽã³ãããã³éãããã¹ã®ã·ã§ã€ãã®ãã§ã€ã³ã¯ãé ç¹åº§æšã®ããããã«ããããããã¹ãã©ã€ãã®äžå€®ã«é 眮ãããŸãã
ããã¯ãïŒã€ã®é ç¹ãæã€ãäžè¬çãªæåãäœãã³ãŒãã§ãã
æåã¯å¹å€è§åœ¢ã§ãããããããªãŽã³ã³ã©ã€ããŒãæã€ããšã¯ã§ããªãããšã«æ³šæããŠãã ããã
p5play ã®ããŒã ããŒãžã«ãããããŽãå転ãããã¢ãã©ã®ããã«äœãããããããã§ããããããã ããã§ãããïŒ
éãããã§ã€ã³ã®å åŽã¯ç©ºæŽãªã®ã§ãããå°ããã¹ãã©ã€ããããããå ¥ããããã€ãããšããŠäœ¿ãããšãã§ããŸãã
éãããã§ã€ã³ã¯ã dynamic ã³ã©ã€ããŒã«ã¯é©ããŠããªãããšã«æ³šæããŠãã ããã
ãã㯠p5play ã䜿çšããŠãã Box2D ç©çãšã³ãžã³ã®å¶éã§ãã代ããã«ãã³ã³ãã³ã©ã€ããŒãããŒãžãåç §ããŠãè€æ°ã®åžå€è§åœ¢ã³ã©ã€ããŒãçµã¿åãããŠå¹å€è§åœ¢ã³ã©ã€ããŒã«ããæ¹æ³ãæ€èšããŠãã ããã
ã³ã³ãã³ã©ã€ããŒ
addCollider
颿°ã䜿çšãããšãã¹ãã©ã€ãã«è€æ°ã®ã³ã©ã€ããŒã远å ããããšãã§ããŸãã Sprite ãšåãã³ã³ã¹ãã©ã¯ã¿åŒæ°ããµããŒãããŠããŸãããæåã®
2 ã€ã®åŒæ°ã¯ãã¹ãã©ã€ãããã® x, y ãªãã»ããäœçœ®æå®ãšãªããŸãã
ãã ããã®æ©èœã¯ãã²ãŒã ã§æ¬åœã«å¿ èŠãªãšãã«ã ã䜿çšããŠãã ããïŒ äŸãã°ãè¿·è·¯ã®å£ã®ããã«å€§éã®ã³ã©ã€ããŒãå¿ èŠãšããå Žåã¯ãç¬èªã®ã³ã©ã€ããŒãæã€ã¹ãã©ã€ãã倧éã«çæããã ãã§ããã¯ãã§ãããŸããã¹ãã©ã€ãã®ç»åãè€éã§ãããã®ã³ã©ã€ããŒã®åœ¢ç¶ã¯ãããªããã£ããªé·æ¹åœ¢ãåãšãã£ãã幟äœåŠçå³åœ¢ã§ååãªã¯ãã§ããç¹ã«å°ããªã¹ãã©ã€ãã§ã¯ããããæãé©ããŠããŸãã
ãªãã°ãå®éã«è€æ°ã®ã³ã©ã€ããŒãæã€ã¹ãã©ã€ããå¿ èŠãªã®ã¯ãã©ã®ãããªã±ãŒã¹ã§ãããïŒ äŸãã°ããã®ã³ãŒããµã³ãã«ã®ãããªããã³ããŒã«ã®ããªãããŒãã¢ãã«åãããå Žåãªã©ã§ãïŒ
ã¹ãã©ã€ãã«ã³ã©ã€ããŒã远å ãããšãã¹ãã©ã€ãã®è³ªéãèªåçã«åèšç®ãããããšã«æ³šæããŠãã ããã
ã³ã³ãã»ã³ãµãŒ
ãªãŒããŒã©ããã»ã³ãµãŒãšã¯ããã®ã¹ãã©ã€ããå¥ã®ã¹ãã©ã€ããšãªãŒããŒã©ããããŠãããã©ããã®ãæ€åºåšãã§ãã
ã»ã³ãµãŒã®ãªãã¹ãã©ã€ãã§ããªãŒããŒã©ããå€å®ã®ã¡ãœããã䜿çšããããšãããã©ã«ãã§ã¯æé»çã« addDefaultSensors
颿°ãå®è¡ãããåã¹ãã©ã€ãã®ã³ã©ã€ããŒçšã«ã»ã³ãµãŒãçæããŸãã
addSensor
颿°ã䜿çšãããšãã¹ãã©ã€ãã«ããã«ã»ã³ãµãŒã远å ããããšãã§ããŸãã
æç»ã®ã«ã¹ã¿ãã€ãº
åãã®ããã¹ãã©ã€ãã«èŠèŠçãšãã§ã¯ãããããéããšãã§ã¯ãçšã®ã¢ãã¡ãŒã·ã§ã³ãäºåã«å®çŸ©ããããšãå°é£ãªå ŽåããããŸãã
幞ããªããšã«ãã¹ãã©ã€ãã® draw
颿°ãã«ã¹ã¿ãã€ãºããã°ããæã¿ã©ããã®èŠèŠçãšãã§ã¯ãããããããšãã§ããŸãïŒ
ã¹ãã©ã€ãã® draw 颿°å éšã§ã¯ãã¹ãã©ã€ãã®äžå¿ã¯ (0, 0) ã«ç§»åãããããšã«æ³šæããŠãã ããã
ãã®ã³ãŒããµã³ãã«ã§ã¯ãã¹ãã©ã€ãã®æ¥åãç§»åæ¹åã«å転ãããç§»åéåºŠã«æ¯äŸããŠãã®æ¹åã«é·ããåŒã䌞ã°ããŸããã¡ãã£ãšè€éã§ããïŒ
æç»æŽæ°ã®ã«ã¹ã¿ãã€ãº
ã¹ãã©ã€ãã® update
颿°ã¯ãããã©ã«ãã§ã¯ q5.js
ã®æç»ã«ãŒãã®æåŸã«å®è¡ãããŸãããã®é¢æ°ã¯ãã¹ãã©ã€ãã®ã¢ãã¡ãŒã·ã§ã³ïŒããå ŽåïŒãšãããŠã¹ã€ãã³ãã®ç¶æ
ç£èŠãæŽæ°ããŸãã
ãã®é¢æ°ããªãŒããŒã©ã€ãããŠããèå°è£ã®ããžãã¯ã®ãããã§ãããã©ã«ãã®æåã¯çœ®ãæããããããæ°ããæåã®è¿œå ããšãªããŸãã
ã·ãŒã±ã³ã·ã£ã«ãªç§»å
async
颿°å
ã§ await
ããŒã¯ãŒãã䜿çšãããšãã²ãšã€ã®ç§»åã®çµäºãåŸ
ã£ãŠãããæ¬¡ã®ç§»åãéå§ããããšãã§ããŸããããã¯ãã¹ãã©ã€ããã®ç§»åããããããæ±ºããŠãããé çªã©ããïŒã·ãŒã±ã³ã·ã£ã«ïŒã«è¡ãã®ã«äŸ¿å©ã§ãã
delay
颿°ã䜿ããšãæå®ããããªç§ã ããæ¬¡ã®ç§»åãåŸ
ã€ããšãã§ããŸããã¡ãªã¿ã« 1000 ããªç§ãšã¯ã 1 ç§ã®ããšã§ãïŒ
move
ã moveTo
ã rotate
ãrotateTo
ãããã³
rotateMinTo
颿°ã¯ãã¹ãŠãç§»åãçµäºãããšãã« true ãžãšè§£æ±ºããã Promise
ãè¿ããŸãã
ããããããããã¹ãã©ã€ãã®ç§»åããæ°ããç§»åæå®ãåããããè»éãå€§å¹ ã«å€ããã»ã©ã®ã³ãªãžã§ã³ãçºçãããããŠåŠšãããããšããã® promise 㯠false ãžãšè§£æ±ºãããŸãã
ã¹ãã©ã€ãã«å¥ã®ã¹ãã©ã€ãã远åŸããããå Žåãç®çå°ã«å°éããã®ãåŸ
ããã«moveTo
ãç¹°ãè¿ã䜿çšããããªããããããŸãããããããããã©ãŒãã³ã¹ãåäžãããã«ã¯ãã¹ãã©ã€ãã®åãã倿ŽããŠãã ãããã¹ãã©ã€ããšäœçœ®ã®éã®è§åºŠãååŸããangleTo
颿°ã䜿çšããŸãã
ãã®ã³ãŒããµã³ãã«ã§ã¯ã q5.js dist 颿°ã䜿çšãããŠããããã¬ã€ã€ãŒãšãã®å³æ¹ãšã®éã®è·é¢ãèšç®ããŠããŸãã