From c5a6cc145c6b162420f68ed8672952044bdc49b4 Mon Sep 17 00:00:00 2001 From: Kevin Lee <kevin@infinite-lee.com> Date: Tue, 24 Apr 2018 17:24:33 -0700 Subject: [PATCH] add sfx on duck spawn --- src/assets/sfx/quack.mp3 | Bin 0 -> 7197 bytes src/assets/sfx/specialquack.mp3 | Bin 0 -> 11844 bytes src/components/duck.js | 13 +++++++++++++ src/components/quack.js | 27 +++++++++++++++++++++++++++ src/components/super-spawner.js | 4 ++++ src/hub.html | 30 ++++++++---------------------- src/hub.js | 1 + 7 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 src/assets/sfx/quack.mp3 create mode 100644 src/assets/sfx/specialquack.mp3 create mode 100644 src/components/quack.js diff --git a/src/assets/sfx/quack.mp3 b/src/assets/sfx/quack.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5c9d5c87de7cc144af2afe5175151cf0c89ecff1 GIT binary patch literal 7197 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 R{0i7>JG}qpfd5xw`#&;LhDrbc literal 0 HcmV?d00001 diff --git a/src/assets/sfx/specialquack.mp3 b/src/assets/sfx/specialquack.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ac461e6c916fc2cb86230d66661c8316bd415fbb GIT binary patch literal 11844 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 NJ|j*2KURa{{|BQ(aYg_D literal 0 HcmV?d00001 diff --git a/src/components/duck.js b/src/components/duck.js index 50f24de70..0b9a1c472 100644 --- a/src/components/duck.js +++ b/src/components/duck.js @@ -12,14 +12,18 @@ AFRAME.registerComponent("duck", { this.force = new CANNON.Vec3(0, this.data.initialForce, 0); this.initialScale = this.el.object3D.scale.x; this.maxScale = this.data.maxScale * this.initialScale; + + this._handleGrabStart = this._handleGrabStart.bind(this); }, play: function() { this.system.addComponent(this); + this.el.addEventListener("grab-start", this._handleGrabStart); }, pause: function() { this.system.removeComponent(this); + this.el.removeEventListener("grab-start", this._handleGrabStart); }, beforeStep: function() { @@ -36,5 +40,14 @@ AFRAME.registerComponent("duck", { this.el.body.applyForce(this.force, this.position); } } + }, + + _handleGrabStart: function() { + const rand = Math.floor(Math.random() * Math.floor(100)); + if (rand < 1) { + this.el.emit("specialquack"); + } else if (rand < 20) { + this.el.emit("quack"); + } } }); diff --git a/src/components/quack.js b/src/components/quack.js new file mode 100644 index 000000000..e97b6f8f1 --- /dev/null +++ b/src/components/quack.js @@ -0,0 +1,27 @@ +AFRAME.registerComponent("quack", { + schema: { + quackPercentage: { default: 1 }, + specialQuackPercentage: { default: 0.01 } + }, + + init: function() { + this._handleGrabStart = this._handleGrabStart.bind(this); + }, + + play: function() { + this.el.addEventListener("grab-start", this._handleGrabStart); + }, + + pause: function() { + this.el.removeEventListener("grab-start", this._handleGrabStart); + }, + + _handleGrabStart: function() { + const rand = Math.random(); + if (rand < this.data.specialQuackPercentage) { + this.el.emit("specialquack"); + } else if (rand < this.data.quackPercentage) { + this.el.emit("quack"); + } + } +}); diff --git a/src/components/super-spawner.js b/src/components/super-spawner.js index 27fee415c..41e2d7aea 100644 --- a/src/components/super-spawner.js +++ b/src/components/super-spawner.js @@ -10,6 +10,7 @@ AFRAME.registerComponent("super-spawner", { init: function() { this.entities = new Map(); this.timeout = null; + this.defaultScale = this.el.getAttribute("scale").clone(); }, play: function() { @@ -23,6 +24,7 @@ AFRAME.registerComponent("super-spawner", { clearTimeout(this.timeout); this.timeout = null; this.el.setAttribute("visible", true); + this.el.setAttribute("scale", this.defaultScale); }, remove: function() { @@ -63,8 +65,10 @@ AFRAME.registerComponent("super-spawner", { if (this.data.spawnCooldown > 0) { this.el.setAttribute("visible", false); + this.el.setAttribute("scale", { x: 0.0001, y: 0.0001, z: 0.0001 }); this.timeout = setTimeout(() => { this.el.setAttribute("visible", true); + this.el.setAttribute("scale", this.defaultScale); this.timeout = null; }, this.data.spawnCooldown * 1000); } diff --git a/src/hub.html b/src/hub.html index a3c2379d5..f70734ccc 100644 --- a/src/hub.html +++ b/src/hub.html @@ -63,6 +63,9 @@ <a-asset-item id="watch-model" response-type="arraybuffer" src="./assets/hud/watch.glb"></a-asset-item> <a-asset-item id="interactable-duck" response-type="arraybuffer" src="./assets/interactables/duck/DuckyMesh.glb"></a-asset-item> + <a-asset-item id="quack" src="./assets/sfx/quack.mp3" response-type="arraybuffer" preload="auto"></a-asset-item> + <a-asset-item id="specialquack" src="./assets/sfx/specialquack.mp3" response-type="arraybuffer" preload="auto"></a-asset-item> + <img id="water-normal-map" src="./assets/waternormals.jpg"> <!-- Templates --> @@ -193,6 +196,9 @@ position="2.9 1.2 0" body="mass: 0; type: static; shape: box;" collision-filter="collisionForces: false;" + quack + sound__quack="src: #quack; on: quack; poolSize: 2;" + sound__specialquack="src: #specialquack; on: specialquack;" ></a-entity> <a-entity @@ -337,31 +343,11 @@ </template> <template data-selector=".LeftHand"> - <a-entity bone-visibility> - <!-- <a-entity - id="left-super-hand" - event-repeater=" - events: action_grab, action_release, action_primary_down, action_primary_up; - eventSource: #player-left-controller" - static-body="shape: sphere; sphereRadius: 0.02" - mixin="super-hands" - position="0 0.05 0" - ></a-entity> --> - </a-entity> + <a-entity bone-visibility></a-entity> </template> <template data-selector=".RightHand"> - <a-entity bone-visibility> -<!-- <a-entity - id="right-super-hand" - event-repeater=" - events: action_grab, action_release, action_primary_down, action_primary_up; - eventSource: #player-right-controller" - static-body="shape: sphere; sphereRadius: 0.02" - mixin="super-hands" - position="0 -0.05 0" - ></a-entity> --> - </a-entity> + <a-entity bone-visibility></a-entity> </template> </a-entity> diff --git a/src/hub.js b/src/hub.js index fb04f6196..24f1b9d66 100644 --- a/src/hub.js +++ b/src/hub.js @@ -93,6 +93,7 @@ import "./components/super-spawner"; import "./components/event-repeater"; import "./components/controls-shape-offset"; import "./components/duck"; +import "./components/quack"; import "./components/cursor-controller"; -- GitLab