Skip to content

Instantly share code, notes, and snippets.

@opencoca
Last active February 8, 2021 00:22
Show Gist options
  • Select an option

  • Save opencoca/72295d712bdb65dc8262577ce59b0b59 to your computer and use it in GitHub Desktop.

Select an option

Save opencoca/72295d712bdb65dc8262577ce59b0b59 to your computer and use it in GitHub Desktop.
https://threejs.org/editor/ Arkanoid game logic with added sound (optimized for Raspberry Pi)
function beep() {
var snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
snd.play();
}
function boop() {
var snd = new Audio("data:audio/wav;base64,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")
snd.play();
}
var ball = this.getObjectByName( 'Ball' );
var direction = new THREE.Vector3();
direction.x = Math.random() - 0.5;
direction.z = - 0.5;
direction.normalize();
var speed = new THREE.Vector3();
//
var group = new THREE.Group();
this.add( group );
var paddle = this.getObjectByName( 'Paddle' );
paddle.material.visible = false;
group.add( paddle );
var brick = this.getObjectByName( 'Brick' );
for ( var j = 0; j < 8; j ++ ) {
var material = new THREE.MeshPhongMaterial( { color: Math.random() * 0xffffff } );
for ( var i = 0; i < 12; i ++ ) {
var object = brick.clone();
object.position.x = i * 2.2 - 12;
object.position.z = j * 1.4 - 12;
group.add( object );
var cylinder = object.getObjectByName( 'Cylinder' );
cylinder.material = material;
}
}
brick.visible = false;
brick.material.visible = false;
//
var raycaster = new THREE.Raycaster();
function update( event ) {
if ( ball.position.x < - 15 || ball.position.x > 15 ) {
boop();
direction.x = - direction.x;
}
if ( ball.position.z < - 20 || ball.position.z > 20 ) {
boop();
direction.z = - direction.z;
}
ball.position.x = Math.max( - 15, Math.min( 15, ball.position.x ) );
ball.position.z = Math.max( - 20, Math.min( 20, ball.position.z ) );
raycaster.set( ball.position, direction );
var intersections = raycaster.intersectObjects( group.children );
if ( intersections.length > 0 ) {
var intersection = intersections[ 0 ];
if ( intersection.distance < 1 ) {
if ( intersection.object !== paddle ) {
beep();
group.remove( intersection.object );
}
boop();
direction.reflect( intersection.face.normal );
}
}
ball.position.add( speed.copy( direction ).multiplyScalar( event.delta / 120 ) );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment