UNPKG

networked-aframe

Version:

A web framework for building multi-user virtual reality experiences.

115 lines (107 loc) 4.17 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Shooter Example — Networked-Aframe</title> <meta name="description" content="Shooter Example — Networked-Aframe" /> <script src="https://aframe.io/releases/1.6.0/aframe.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.8.1/socket.io.min.js"></script> <script src="/easyrtc/easyrtc.js"></script> <script src="/dist/networked-aframe.js"></script> <script> // see issue https://github.com/networked-aframe/networked-aframe/issues/267 NAF.schemas.getComponentsOriginal = NAF.schemas.getComponents; NAF.schemas.getComponents = (template) => { if (!NAF.schemas.hasTemplate('#avatar-template')) { NAF.schemas.add({ template: '#avatar-template', components: [ { component: 'position', requiresNetworkUpdate: NAF.utils.vectorRequiresUpdate(0.001) }, { component: 'rotation', requiresNetworkUpdate: NAF.utils.vectorRequiresUpdate(0.5) }, { selector: '.head', component: 'material', property: 'color' } ] }); } const components = NAF.schemas.getComponentsOriginal(template); return components; }; </script> <script src="https://cdn.jsdelivr.net/npm/aframe-randomizer-components@3.0.2/dist/aframe-randomizer-components.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/aframe-environment-component@1.3.7/dist/aframe-environment-component.min.js"></script> <script src="/js/spawn-in-circle.component.js"></script> <script src="/js/gun.component.js"></script> <script src="/js/forward.component.js"></script> <script src="/js/remove-in-seconds.component.js"></script> </head> <body> <a-scene networked-scene=" room: shooter; debug: true; adapter: wseasyrtc; " renderer="physicallyCorrectLights: true;" > <a-assets> <!-- Templates --> <!-- Avatar --> <template id="avatar-template"> <a-entity class="avatar"> <a-sphere class="head" scale="0.45 0.5 0.4"></a-sphere> <a-entity class="face" position="0 0.05 0"> <a-sphere class="eye" color="#efefef" position="0.16 0.1 -0.35" scale="0.12 0.12 0.12"> <a-sphere class="pupil" color="#000" position="0 0 -1" scale="0.2 0.2 0.2"></a-sphere> </a-sphere> <a-sphere class="eye" color="#efefef" position="-0.16 0.1 -0.35" scale="0.12 0.12 0.12"> <a-sphere class="pupil" color="#000" position="0 0 -1" scale="0.2 0.2 0.2"></a-sphere> </a-sphere> </a-entity> <a-entity class="gun"> <a-box position="0.51 -0.13 -0.29" scale="0.19 0.23 0.67" color="#000"></a-box> <a-entity class="gun-tip" position="0.51 -0.10 -0.64"></a-entity> </a-entity> </a-entity> </template> <!-- Bullet --> <template id="bullet-template"> <a-entity> <a-sphere class="bullet" scale="0.1 0.1 0.1" color="#fff"></a-sphere> </a-entity> </template> <!-- /Templates --> </a-assets> <a-entity id="rig"> <a-entity id="player" networked="template:#avatar-template;attachTemplateToLocal:false;" camera position="0 1.6 0" spawn-in-circle="radius:3" wasd-controls look-controls gun="bulletTemplate:#bullet-template" > <a-sphere class="head" visible="false" random-color></a-sphere> </a-entity> </a-entity> <a-entity environment="preset:arches"></a-entity> <a-entity light="type:ambient;intensity:1.0"></a-entity> </a-scene> <script> // Called by Networked-Aframe when connected to server function onConnect() { console.log('onConnect', new Date()); } </script> </body> </html>