éçºè åããã€ã³ã¿ãŒããã¯APIã®è©³çްã¬ã€ããæ©èœãå¿çšäŸããã©ãŠã¶äºææ§ãã»ãã¥ãªãã£ãå®è£ äŸã解説ããŸãã
ãã€ã³ã¿ãŒããã¯APIïŒæ²¡å ¥åäœéšã®ããã®é«åºŠãªããŠã¹ã«ãŒãœã«å¶åŸ¡
ãã€ã³ã¿ãŒããã¯APIïŒæ§ç§°ïŒããŠã¹ããã¯APIïŒã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãããŠã¹ã®åãã«ããçŽæ¥çã«ã¢ã¯ã»ã¹ã§ããããã«ãã匷åãªJavaScript APIã§ããç¹ã«ãäžäººç§°èŠç¹ã²ãŒã ã3Dç°å¢ãã€ã³ã¿ã©ã¯ãã£ããªãã¶ã€ã³ããŒã«ãªã©ãã«ãŒãœã«ãé衚瀺ã«ãããã®åããçŽæ¥ã¢ã¯ã·ã§ã³ã«å€æããå¿ èŠãããæ²¡å ¥åäœéšã®åµåºã«åœ¹ç«ã¡ãŸãããã®APIã«ãããéçºè ã¯ããŠã¹ã®åãããã£ããã£ããã«ãŒãœã«ããã©ãŠã¶ãŠã£ã³ããŠã®ç«¯ã«éããŠãç¶ç¶çã«ãã«ã¿ïŒäœçœ®ã®å€åïŒãåãåãããšãã§ããŸãã以äžã®ã»ã¯ã·ã§ã³ã§ã¯ããã®APIã®æ©èœãå¿çšäŸãã»ãã¥ãªãã£é¢ã«ã€ããŠæãäžããå®è·µçãªäŸã玹ä»ããŸãã
ãã€ã³ã¿ãŒããã¯APIã®çè§£
ãã€ã³ã¿ãŒããã¯APIã䜿çšãããšãããŠã¹ã«ãŒãœã«ããã©ãŠã¶ãŠã£ã³ããŠã«ããã¯ãã广çã«é衚瀺ã«ããŠãçžå¯ŸçãªããŠã¹ç§»åæ å ±ãæäŸã§ããŸããããã¯ãã«ãŒãœã«ã®çµ¶å¯Ÿäœçœ®ã®ä»£ããã«ãã¢ããªã±ãŒã·ã§ã³ãæåŸã®ãã¬ãŒã ããã®Xããã³Y座æšã®å€åãåãåãããšãæå³ããŸããããã«ãããã€ã³ã¿ã©ã¯ãã£ãã§æ²¡å ¥æã®ãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã®è±å¯ãªå¯èœæ§ãè§£ãæŸãããŸãã
äž»ãªç¹åŸŽãšæ©èœ
- ã«ãŒãœã«ã®éè¡šç€ºïŒ APIã¯ãŠãŒã¶ãŒããããŠã¹ã«ãŒãœã«ãé ããããã¯ãªãŒã³ã§æ²¡å ¥æã®ããäœéšãæäŸããŸãã
- çžå¯Ÿçãªç§»åïŒ çµ¶å¯ŸçãªããŠã¹åº§æšã®ä»£ããã«ãAPIã¯çžå¯Ÿçãªç§»åããŒã¿ïŒãã«ã¿ïŒãæäŸããã¹ã ãŒãºã§é£ç¶çãªã€ã³ã¿ã©ã¯ã·ã§ã³ãå¯èœã«ããŸãã
- å¢çã®è¶ è¶ïŒ ã«ãŒãœã«ã¯ãã©ãŠã¶ãŠã£ã³ããŠã®ç«¯ã§åæ¢ããªããªããåããã·ãŒã ã¬ã¹ã«ç¶ç¶ããŸãã
- ç·æ¥è±åºæ©èœïŒ ãŠãŒã¶ãŒã¯éåžžãEscapeããŒãæŒãããšã§ãã€ã³ã¿ãŒããã¯ãçµäºã§ããã«ãŒãœã«ã®å¶åŸ¡ãåãæ»ãææ®µãæäŸãããŸãããã®æ©èœã¯ãã©ãŠã¶ã«äŸåãããããå®å šã«äŸåããã¹ãã§ã¯ãããŸãããããã¯ãè§£é€ããããã®ä»£æ¿UIèŠçŽ ãæäŸããŠãã ããã
ãã€ã³ã¿ãŒããã¯APIã䜿çšããå Žé¢
ãã€ã³ã¿ãŒããã¯APIã¯ã次ã®ãããªãçŽæ¥çã§ç¶ç¶çãªããŠã¹å ¥åãå¿ èŠãšããã·ããªãªã§æã圹ç«ã¡ãŸãïŒ
- äžäººç§°èŠç¹ã²ãŒã ïŒ 3Dç°å¢ã§ã®ã«ã¡ã©ãšãã¬ã€ã€ãŒã®ç§»åå¶åŸ¡ã
- 3Dã¢ããªã³ã°ããã³ãã¶ã€ã³ããŒã«ïŒ ãªããžã§ã¯ãã®æäœãšã·ãŒã³ã®ããã²ãŒã·ã§ã³ã
- ä»®æ³çŸå®ïŒVRïŒäœéšïŒ VRç°å¢å ã§ã®èªç¶ãªã€ã³ã¿ã©ã¯ã·ã§ã³ã®æäŸã
- ãªã¢ãŒããã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ïŒ ãªã¢ãŒããã·ã³äžã§ã®ããŠã¹ã®åããæ£ç¢ºã«åçŸã
- ã€ã³ã¿ã©ã¯ãã£ããããïŒ ããããã¥ãŒã®ãã³ãšãºãŒã ã
ãã€ã³ã¿ãŒããã¯APIã®å®è£
ãã€ã³ã¿ãŒããã¯APIã®å®è£ ã«ã¯ãããã¯ã®èŠæ±ãç§»åã€ãã³ãã®åŠçãããã³å¿ èŠã«å¿ããããã¯ã®è§£é€ãå«ãŸããŸãã以äžã«ã¹ããããã€ã¹ãããã®ã¬ã€ãã瀺ããŸãïŒ
1. ãã€ã³ã¿ãŒããã¯ã®èŠæ±
ãã€ã³ã¿ãŒããã¯ãèŠæ±ããã«ã¯ãèŠçŽ ã«å¯Ÿã㊠requestPointerLock() ã¡ãœãããåŒã³åºãå¿
èŠããããŸããããã¯éåžžããã¿ã³ã®ã¯ãªãã¯ãããŒã®æŒäžãªã©ã®ã€ãã³ããã³ãã©å
ã§è¡ãããŸãããã©ãŠã¶ã®ã»ãã¥ãªãã£ããªã·ãŒã«æºæ ããããããªã¯ãšã¹ãããŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒã«ãã£ãŠããªã¬ãŒãããããšãä¿èšŒããããšãéèŠã§ãã requestPointerLock() ãåŒã³åºãèŠçŽ ã*ã¿ãŒã²ãã*èŠçŽ ãšãªããŸããããŠã¹ã€ãã³ãã¯ããã®èŠçŽ ã«å¯ŸããŠçžå¯Ÿçã«ãªããŸãã
äŸïŒ
const element = document.getElementById('myCanvas');
element.addEventListener('click', () => {
element.requestPointerLock = element.requestPointerLock ||
element.mozRequestPointerLock ||
element.webkitRequestPointerLock;
// Ask the browser to lock the pointer
element.requestPointerLock();
});
ã¯ãã¹ãã©ãŠã¶äºææ§ïŒ ãã®ã³ãŒãã¹ããããã¯ãå€ããã©ãŠã¶ã®ããã«ãã¬ãã£ãã¯ã¹ã䜿çšããŠããŸãããã©ãŠã¶ã®ãµããŒãã«åºã¥ããŠãæ£ãããã³ããŒãã¬ãã£ãã¯ã¹ä»ã颿°ã `element.requestPointerLock` ã«å²ãåœãŠãŸããçŸä»£ã®ãã©ãŠã¶ã§ã¯éåžžããã¬ãã£ãã¯ã¹ã¯äžèŠã§ãã
2. ãã€ã³ã¿ãŒããã¯ã®å€æŽããªãã¹ã³ãã
ãã€ã³ã¿ãŒããã¯ãæ£åžžã«ååŸãããã倱ãããããç¥ãããã«ã `pointerlockchange` ã€ãã³ãããªãã¹ã³ããå¿ èŠããããŸãããã®ã€ãã³ã㯠`document` ãªããžã§ã¯ãã§ãã£ã¹ããããããŸãã
äŸïŒ
document.addEventListener('pointerlockchange', lockChangeAlert, false);
document.addEventListener('mozpointerlockchange', lockChangeAlert, false);
document.addEventListener('webkitpointerlockchange', lockChangeAlert, false);
function lockChangeAlert() {
if (document.pointerLockElement === element ||
document.mozPointerLockElement === element ||
document.webkitPointerLockElement === element) {
console.log('The pointer lock is now locked.');
document.addEventListener("mousemove", moveCallback, false);
} else {
console.log('The pointer lock is now unlocked.');
document.removeEventListener("mousemove", moveCallback, false);
}
}
ãã®ã³ãŒã㯠`document` äžã« `pointerlockchange` ïŒããã³ãã®ãã¬ãã£ãã¯ã¹ä»ãããŒãžã§ã³ïŒã®ã€ãã³ããªã¹ããŒãèšå®ããŸãã `lockChangeAlert` 颿°ã¯ããã€ã³ã¿ãŒãã¿ãŒã²ããèŠçŽ ã«ããã¯ãããŠãããã©ããããã§ãã¯ããŸããããã¯ãããŠããå Žå㯠`mousemove` ã€ãã³ããªã¹ããŒã远å ããããã¯ãè§£é€ãããå Žåã¯ãªã¹ããŒãåé€ããŸããããã«ããããã€ã³ã¿ãŒãããã¯ãããŠãããšãã«ã®ã¿ããŠã¹ã®åãã远跡ãããããã«ãªããŸãã
3. ããŠã¹ã®åãã®åŠç
ãã€ã³ã¿ãŒãããã¯ããããšã`MouseEvent` ãªããžã§ã¯ãã® `movementX` ããã³ `movementY` ããããã£ãéããŠãçžå¯ŸçãªããŠã¹ç§»åããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸãããããã®ããããã£ã¯ãæåŸã®ã€ãã³ãããã®ããŠã¹äœçœ®ã®å€åã衚ããŸãã
äŸïŒ
function moveCallback(e) {
var movementX = e.movementX ||
e.mozMovementX ||
e.webkitMovementX ||
0;
var movementY = e.movementY ||
e.mozMovementY ||
e.webkitMovementY ||
0;
// Update the position of the box accordingly
box.style.top = parseInt(box.style.top) + movementY + 'px';
box.style.left = parseInt(box.style.left) + movementX + 'px';
}
ãã®ã³ãŒãã¯ãããŠã¹ãåããã³ã«åŒã³åºããã `moveCallback` 颿°ãå®çŸ©ããŸãã`MouseEvent` ãªããžã§ã¯ããã `movementX` ãš `movementY` ããããã£ãïŒãããå€ããã©ãŠã¶ã®ããã«ãã¬ãã£ãã¯ã¹ã䜿çšããŠïŒæœåºããŸãããã®åŸããããã®ç§»åå€ã«åºã¥ã㊠`box` èŠçŽ ã®äœçœ®ãæŽæ°ããŸãã
4. ãã€ã³ã¿ãŒããã¯ã®çµäº
ãã€ã³ã¿ãŒããã¯ãè§£é€ããã«ã¯ã`document` ãªããžã§ã¯ãã® `exitPointerLock()` ã¡ãœãããåŒã³åºããŸãããŠãŒã¶ãŒããã€ã³ã¿ãŒããã¯ãçµäºããæ¹æ³ãéåžžã¯ãã¿ã³ãããŒïŒäŸïŒEscapeããŒïŒã®æŒäžãéããŠæäŸããããšãéèŠã§ãã
äŸïŒ
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') {
document.exitPointerLock = document.exitPointerLock ||
document.mozExitPointerLock ||
document.webkitExitPointerLock;
document.exitPointerLock();
}
});
ãã®ã³ãŒãã¯'Escape'ããŒã®æŒäžããªãã¹ã³ããŸãããããæ€åºããããšã`document.exitPointerLock()` ãåŒã³åºããŠãã€ã³ã¿ãŒããã¯ãè§£é€ãããŠãŒã¶ãŒãããŠã¹ã«ãŒãœã«ã®å¶åŸ¡ãåãæ»ããããã«ããŸããããã¯ããã€ã³ã¿ãŒããã¯ã®ã·ããªãªã«ãããŠãŠãŒã¶ãŒãæåŸ ããäžè¬çã§å ±éã®æåã§ãã
ãã©ãŠã¶ã®äºææ§
ãã€ã³ã¿ãŒããã¯APIã¯ãChromeãFirefoxãSafariãEdgeãå«ãçŸä»£ã®ãã©ãŠã¶ã§åºããµããŒããããŠããŸããããããAPIã䜿çšããåã«ãã©ãŠã¶ã®äºææ§ã確èªããããšã¯åžžã«è¯ãç¿æ £ã§ãã
èŠçŽ ã« `requestPointerLock` ã¡ãœãããååšãããã©ããã確èªããããšã§ãäºææ§ããã§ãã¯ã§ããŸãïŒ
if ('requestPointerLock' in element) {
// Pointer Lock API is supported
} else {
// Pointer Lock API is not supported
console.log('Pointer Lock API is not supported in this browser.');
}
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
ãã€ã³ã¿ãŒããã¯APIã«ã¯ã»ãã¥ãªãã£äžã®åœ±é¿ããããŸãããªããªãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãããŠã¹ã«ãŒãœã«ãå¶åŸ¡ããæç€ºçãªåæãªãã«ãŠãŒã¶ãŒå ¥åããã£ããã£ããå¯èœæ§ãããããã§ãããã©ãŠã¶ã¯ãããã®ãªã¹ã¯ã軜æžããããã«ããã€ãã®ã»ãã¥ãªãã£å¯Ÿçãå®è£ ããŠããŸãïŒ
- ãŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒèŠä»¶ïŒ æªæã®ãããŠã§ããµã€ããèªåçã«ãã€ã³ã¿ãŒãããã¯ããã®ãé²ãããã`requestPointerLock()` ã¡ãœããã¯ãŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒïŒäŸïŒãã¿ã³ã®ã¯ãªãã¯ïŒã«å¿ããŠåŒã³åºãããå¿ èŠããããŸãã
- ç·æ¥è±åºæ©èœïŒ ãŠãŒã¶ãŒã¯éåžžãEscapeããŒãæŒãããšã§ãã€ã³ã¿ãŒããã¯ãçµäºã§ããŸãã
- ãã©ãŒã«ã¹èŠä»¶ïŒ ãã€ã³ã¿ãŒããã¯APIãæ©èœããããã«ã¯ããã©ãŠã¶ãŠã£ã³ããŠããã©ãŒã«ã¹ãæã£ãŠããå¿ èŠããããŸãã
- Permissions APIïŒ äžéšã®ãã©ãŠã¶ã§ã¯ããã€ã³ã¿ãŒããã¯ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããåã«ããŠãŒã¶ãŒã®æç€ºçãªèš±å¯ãå¿ èŠã«ãªãå ŽåããããŸãã
ãã¹ããã©ã¯ãã£ã¹ïŒ ãŠãŒã¶ãŒãæ··ä¹±ãããããäžå¿«ã«ããããããªãããã«ãå ç¢ãªçµäºæŠç¥ãå®è£ ãããã€ã³ã¿ãŒããã¯ãã¢ã¯ãã£ãã§ããããšãæç¢ºã«ç€ºãããšãéèŠã§ãã
ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
ãã€ã³ã¿ãŒããã¯APIã¯æ²¡å ¥åäœéšãåäžãããããšãã§ããŸãããé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠã¯ã¢ã¯ã»ã·ããªãã£ã®èª²é¡ãããããå¯èœæ§ããããŸãã以äžãèæ ®ããŠãã ããïŒ
- 代æ¿å ¥åæ¹æ³ïŒ ããŠã¹ã䜿çšã§ããªããŠãŒã¶ãŒã®ããã«ã代æ¿ã®å ¥åæ¹æ³ïŒäŸïŒããŒããŒãæäœïŒãæäŸããŸãã
- èŠèŠçãªæãããïŒ ç¹ã«ã«ãŒãœã«ãé衚瀺ã«ãªã£ãŠããå Žåã«ãã«ãŒãœã«ã®äœçœ®ããã©ãŒã«ã¹ã瀺ãæç¢ºãªèŠèŠçãªæããããæäŸããŸãã
- ã«ã¹ã¿ãã€ãºå¯èœãªæåºŠïŒ ãŠãŒã¶ãŒãåã ã®ããŒãºã«åãããŠããŠã¹ã®åãã®æåºŠã調æŽã§ããããã«ããŸãã
- æç¢ºãªçµäºæŠç¥ïŒ äžéšã®ãŠãŒã¶ãŒã«ãšã£ãŠã¯æ¹åæèŠã倱ãå¯èœæ§ãããããããŠãŒã¶ãŒãç°¡åã«ãã€ã³ã¿ãŒããã¯ã¢ãŒããçµäºã§ããããã«ããŸãã
äŸãšãŠãŒã¹ã±ãŒã¹
äžäººç§°èŠç¹ã·ã¥ãŒãã£ã³ã°ïŒFPSïŒã²ãŒã
ãã€ã³ã¿ãŒããã¯APIã¯ããã©ãŠã¶ã§æ²¡å ¥åã®FPSã²ãŒã ãäœæããããã«äžå¯æ¬ ã§ããããã«ããããã¬ã€ã€ãŒã¯æ£ç¢ºãªããŠã¹ã®åãã§ã«ã¡ã©ãå¶åŸ¡ããæŠåšãçãããšãã§ããŸããçžå¯ŸçãªããŠã¹ç§»åããŒã¿ã¯ã«ã¡ã©ã®åããæŽæ°ããããã«äœ¿çšãããã¹ã ãŒãºã§å¿çæ§ã®é«ããšã€ãã³ã°äœéšãæäŸããŸãã
äŸïŒ ãã¬ã€ã€ãŒã3Dç°å¢ãããã²ãŒãããäºãã«æã¡åããŠã§ãããŒã¹ã®ãã«ããã¬ã€ã€ãŒFPSã²ãŒã ãæ³åããŠã¿ãŠãã ããããã€ã³ã¿ãŒããã¯APIã¯ãããŠã¹ã®åããçŽæ¥ã«ã¡ã©ã®å転ã«å€æãããããšãä¿èšŒããç«¶äºåã®ããé åçãªã²ãŒã ãã¬ã€äœéšãæäŸããŸããä»£æ¿æ¡ã§ãã絶察çãªããŠã¹äœçœ®ã«äŸåããæ¹æ³ã¯ãäžæ Œå¥œã§ãã¬ã€äžå¯èœã§ãã
3Dã¢ããªã³ã°ããŒã«
3Dã¢ããªã³ã°ããŒã«ã§ã¯ããã€ã³ã¿ãŒããã¯APIã䜿çšããŠãªããžã§ã¯ããæäœããã·ãŒã³ãããã²ãŒãã§ããŸãããŠãŒã¶ãŒã¯çŽæçãªããŠã¹ãžã§ã¹ãã£ãŒã䜿çšããŠãã¥ãŒãå転ããºãŒã ããã³ããããšãã§ããŸãããã®APIã¯ã3Dç°å¢ãšå¯Ÿè©±ããããã®èªç¶ã§å¹ççãªæ¹æ³ãæäŸããŸãã
äŸïŒ å®¶å ·ããã¶ã€ã³ããããã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŸãããããŠãŒã¶ãŒã¯æ€ åã®3Dã¢ãã«ãå転ãããŠãããŸããŸãªè§åºŠããèŠãå¿ èŠããããŸãããã€ã³ã¿ãŒããã¯ã䜿çšãããšãæ€ åãã¯ãªãã¯ããŠãã©ãã°ããããšã§ãããŠã¹ã®åããçŽæ¥å転ãå¶åŸ¡ãããã¿ã³ãã¹ã©ã€ããŒã䜿çšããããããã¶ã€ã³ããã»ã¹ãããæµåçã§çŽæçã«ãªããŸãã
ä»®æ³çŸå®ïŒVRïŒç°å¢
ãã€ã³ã¿ãŒããã¯APIã¯ãä»®æ³äžçãšå¯Ÿè©±ããããã®ããèªç¶ãªæ¹æ³ãæäŸããããšã§ããã©ãŠã¶ã§ã®VRäœéšãåäžãããããšãã§ããŸãããŠãŒã¶ãŒã¯ããŠã¹ã䜿çšããŠãVRç°å¢å ã®ãªããžã§ã¯ããæã瀺ããéžæããæäœããããšãã§ããŸããWebXRãšçµã¿åãããããšã§ããã€ã³ã¿ãŒããã¯ã¯éåžžã«æ²¡å ¥æã®ããã€ã³ã¿ã©ã¯ãã£ããªVRã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã
äŸïŒ ããŒãã£ã«ãã¥ãŒãžã¢ã ãã¢ãŒã§ã¯ããŠãŒã¶ãŒã¯3Dç°å¢ã§æŽå²çãªéºç©ãæ¢çŽ¢ã§ããŸãããã€ã³ã¿ãŒããã¯ã䜿çšããããšã§ãããŠã¹ã䜿ã£ãŠä»®æ³ãªããžã§ã¯ãã«ãæã䌞ã°ãããŠå¯Ÿè©±ãã詳现ã調ã¹ãããã«ãºãŒã ã€ã³ããããå šäœåãèŠãããã«å転ããããããããšãã§ããååçã«ãããªãèŠããããé åçã§æè²çãªäœéšãæäŸããŸãã
é«åºŠãªãã¯ããã¯
ã²ãŒã ããããšã®çµã¿åãã
ãã€ã³ã¿ãŒããã¯APIãã²ãŒã ãããå ¥åãšçµã¿åãããŠããã€ããªãããªå¶åŸ¡æ¹åŒãäœæã§ããŸããããšãã°ããã¬ã€ã€ãŒã®ç§»åã«ã¯ã²ãŒã ãããã䜿çšããç §æºã«ã¯ããŠã¹ã䜿çšããããšãã§ããŸãã
ã¹ã ãŒãžã³ã°ãšãã£ã«ã¿ãªã³ã°ã®å®è£
ããŠã¹ã®åãã®æ»ããããåäžãããããã«ãã¹ã ãŒãžã³ã°ãšãã£ã«ã¿ãªã³ã°ã®ãã¯ããã¯ãå®è£ ã§ããŸããããã«ããããžãã¿ãŒãæžãããããå®å®ããå¿çæ§ã®é«ãäœéšãçã¿åºãã®ã«åœ¹ç«ã¡ãŸãã
ã«ã¹ã¿ã ã«ãŒãœã«ã®å®è£
ãã€ã³ã¿ãŒããã¯APIã¯ã·ã¹ãã ã®ã«ãŒãœã«ãé衚瀺ã«ããŸãããã¢ããªã±ãŒã·ã§ã³å ã§ã«ã¹ã¿ã ã«ãŒãœã«ãå®è£ ããŠããŠãŒã¶ãŒã«èŠèŠçãªãã£ãŒãããã¯ãæäŸããããšãã§ããŸããããã¯ãVRç°å¢ãç¬èªã®èŠèŠã¹ã¿ã€ã«ãæäŸãããå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
äžè¬çãªåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ãã€ã³ã¿ãŒããã¯ãæ©èœããªã
ãã€ã³ã¿ãŒããã¯APIãæ©èœããªãå Žåã¯ã以äžã確èªããŠãã ããïŒ
- ãŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒïŒ
requestPointerLock()ã¡ãœããããŠãŒã¶ãŒã®ãžã§ã¹ãã£ãŒã«å¿ããŠåŒã³åºãããŠããããšã確èªããŠãã ããã - ãã©ãŠã¶ã®ãã©ãŒã«ã¹ïŒ ãã©ãŠã¶ãŠã£ã³ããŠããã©ãŒã«ã¹ãæã£ãŠããããšã確èªããŠãã ããã
- æš©éïŒ ãã©ãŠã¶ããã€ã³ã¿ãŒããã¯ãžã®ã¢ã¯ã»ã¹ã«æç€ºçãªãŠãŒã¶ãŒã®èš±å¯ãå¿ èŠãšãããã©ããã確èªããŠãã ããã
- CORSïŒ ã¢ããªã±ãŒã·ã§ã³ãã¯ãã¹ãªãªãžã³ã³ã³ããã¹ãã§å®è¡ãããŠããå Žåã¯ãå¿ èŠãªCORSããããŒãèšå®ãããŠããããšã確èªããŠãã ããã
ããŠã¹ã®åããäžæ£ç¢º
ããŠã¹ã®ç§»åããŒã¿ãæ£ç¢ºã§ãªãå Žåã¯ã以äžãèæ ®ããŠãã ããïŒ
- ã¹ã ãŒãžã³ã°ãšãã£ã«ã¿ãªã³ã°ïŒ ãžãã¿ãŒãæžããããã«ã¹ã ãŒãžã³ã°ãšãã£ã«ã¿ãªã³ã°ã®ãã¯ããã¯ãå®è£ ããŸãã
- ã¹ã±ãŒãªã³ã°ïŒ ã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«åãããŠãããŠã¹ç§»åããŒã¿ã®ã¹ã±ãŒãªã³ã°ä¿æ°ã調æŽããŸãã
- ãã¬ãŒã ã¬ãŒãïŒ ã¢ããªã±ãŒã·ã§ã³ãå®å®ãããã¬ãŒã ã¬ãŒãã§å®è¡ãããŠããããšã確èªããŠãã ããã
çµè«
ãã€ã³ã¿ãŒããã¯APIã¯ãæ²¡å ¥åã§ã€ã³ã¿ã©ã¯ãã£ããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã®è²ŽéãªããŒã«ã§ãããã®æ©èœãã»ãã¥ãªãã£ã«é¢ããèæ ®äºé ãããã³ã¢ã¯ã»ã·ããªãã£ãžã®åœ±é¿ãçè§£ããããšã§ãéçºè ã¯ãã®APIãæŽ»çšããŠãããŸããŸãªãã©ãããã©ãŒã ãããã€ã¹ã§é åçãªäœéšãæäŸã§ããŸããã²ãŒã ãããã¶ã€ã³ãä»®æ³çŸå®ã«è³ããŸã§ããã€ã³ã¿ãŒããã¯APIã¯æ£ç¢ºã§çŽæçãªããŠã¹ã«ãŒãœã«å¶åŸ¡ã®åºç€ãæäŸãããŠã§ãããŒã¹ã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã®æ°ããªå¯èœæ§ãåãéããŸãã
ãŠã§ãæè¡ãé²åãç¶ããäžã§ããã€ã³ã¿ãŒããã¯APIã¯ãæ²¡å ¥åãŠã§ãäœéšã®æªæ¥ã圢äœãäžã§ãŸããŸãéèŠãªåœ¹å²ãæããããšã¯ééããããŸãããææ°æ å ±ãå ¥æãããã®æ©èœã詊ãããšã§ãéçºè ã¯å¯èœãªããšã®éçãæŒãåºããäžçäžã®ãŠãŒã¶ãŒã®ããã«çã«é©æ°çã§é åçãªã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸãã