mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 06:59:03 +02:00
particle hit against walls
This commit is contained in:
parent
1e653133b4
commit
5789ca2017
3 changed files with 148 additions and 17 deletions
|
@ -137,6 +137,10 @@ function triggerChanged(side, value) {
|
||||||
forceDirection: barrelVectors[side]
|
forceDirection: barrelVectors[side]
|
||||||
});
|
});
|
||||||
Entities.callEntityMethod(intersection.entityID, 'onHit', [forceDirection]);
|
Entities.callEntityMethod(intersection.entityID, 'onHit', [forceDirection]);
|
||||||
|
} else {
|
||||||
|
Script.setTimeout(function() {
|
||||||
|
createWallHit(intersection.intersection);
|
||||||
|
}, 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -170,16 +174,21 @@ Script.scriptEnding.connect(scriptEnding);
|
||||||
Script.update.connect(update);
|
Script.update.connect(update);
|
||||||
|
|
||||||
|
|
||||||
function createMuzzleFlash(position) {
|
function createWallHit(position) {
|
||||||
var flash = Entities.addEntity({
|
var flash = Entities.addEntity({
|
||||||
type: "ParticleEffect",
|
type: "ParticleEffect",
|
||||||
position: position,
|
position: position,
|
||||||
"name": "ParticlesTest Emitter",
|
lifetime: 4,
|
||||||
"color": {},
|
"name": "Wall hit emitter",
|
||||||
|
"color": {
|
||||||
|
red: 228,
|
||||||
|
green: 128,
|
||||||
|
blue: 12
|
||||||
|
},
|
||||||
"maxParticles": 1000,
|
"maxParticles": 1000,
|
||||||
"lifespan": 0.1,
|
"lifespan": 0.1,
|
||||||
"emitRate": 200,
|
"emitRate": 1000,
|
||||||
"emitSpeed": 0.3,
|
"emitSpeed": 1,
|
||||||
"speedSpread": 0,
|
"speedSpread": 0,
|
||||||
"emitOrientation": {
|
"emitOrientation": {
|
||||||
"x": -0.4,
|
"x": -0.4,
|
||||||
|
@ -192,9 +201,8 @@ function createMuzzleFlash(position) {
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"z": 0
|
"z": 0
|
||||||
},
|
},
|
||||||
"emitRadiusStart": 1,
|
|
||||||
"polarStart": 0,
|
"polarStart": 0,
|
||||||
"polarFinish": 2,
|
"polarFinish": Math.PI,
|
||||||
"azimuthStart": -3.1415927410125732,
|
"azimuthStart": -3.1415927410125732,
|
||||||
"azimuthFinish": 2,
|
"azimuthFinish": 2,
|
||||||
"emitAcceleration": {
|
"emitAcceleration": {
|
||||||
|
@ -207,20 +215,140 @@ function createMuzzleFlash(position) {
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"z": 0
|
"z": 0
|
||||||
},
|
},
|
||||||
"particleRadius": 0.006,
|
"particleRadius": 0.01,
|
||||||
"radiusSpread": 0,
|
"radiusSpread": 0.005,
|
||||||
"radiusStart": 0.01,
|
"radiusStart": 0.01,
|
||||||
"radiusFinish": 0.02,
|
"radiusFinish": 0.01,
|
||||||
"colorSpread": {},
|
"colorSpread": {
|
||||||
"colorStart": {},
|
red: 100,
|
||||||
"colorFinish": {},
|
green: 100,
|
||||||
|
blue: 20
|
||||||
|
},
|
||||||
"alpha": 1,
|
"alpha": 1,
|
||||||
"alphaSpread": 0,
|
"alphaSpread": 0,
|
||||||
"alphaStart": 1,
|
"alphaStart": 0,
|
||||||
"alphaFinish": 1,
|
"alphaFinish": 0,
|
||||||
|
"additiveBlending": true,
|
||||||
|
"textures": "http://ericrius1.github.io/PartiArt/assets/star.png"
|
||||||
|
});
|
||||||
|
|
||||||
|
Script.setTimeout(function() {
|
||||||
|
Entities.editEntity(flash, {
|
||||||
|
isEmitting: false
|
||||||
|
});
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function createMuzzleFlash(position) {
|
||||||
|
var smoke = Entities.addEntity({
|
||||||
|
type: "ParticleEffect",
|
||||||
|
position: position,
|
||||||
|
lifetime: 2,
|
||||||
|
"name": "Smoke Hit Emitter",
|
||||||
|
"maxParticles": 1000,
|
||||||
|
"lifespan": 4,
|
||||||
|
"emitRate": 20,
|
||||||
|
emitSpeed: 0,
|
||||||
|
"speedSpread": 0,
|
||||||
|
"emitDimensions": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"polarStart": 0,
|
||||||
|
"polarFinish": 0,
|
||||||
|
"azimuthStart": -3.1415927410125732,
|
||||||
|
"azimuthFinish": 3.14,
|
||||||
|
"emitAcceleration": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0.5,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"accelerationSpread": {
|
||||||
|
"x": .2,
|
||||||
|
"y": 0,
|
||||||
|
"z": .2
|
||||||
|
},
|
||||||
|
"radiusSpread": .02,
|
||||||
|
"particleRadius": 0.05,
|
||||||
|
"radiusStart": 0.05,
|
||||||
|
"radiusFinish": 0.05,
|
||||||
|
"alpha": 1,
|
||||||
|
"alphaSpread": 0,
|
||||||
|
"alphaStart": 0,
|
||||||
|
"alphaFinish": 0,
|
||||||
"additiveBlending": 0,
|
"additiveBlending": 0,
|
||||||
"textures": "https://hifi-public.s3.amazonaws.com/alan/Particles/Particle-Sprite-Smoke-1.png"
|
"textures": "https://hifi-public.s3.amazonaws.com/alan/Particles/Particle-Sprite-Smoke-1.png"
|
||||||
});
|
});
|
||||||
|
Script.setTimeout(function() {
|
||||||
|
Entities.editEntity(smoke, {
|
||||||
|
isEmitting: false
|
||||||
|
})
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
var flash = Entities.addEntity({
|
||||||
|
type: "ParticleEffect",
|
||||||
|
position: position,
|
||||||
|
lifetime: 4,
|
||||||
|
"name": "Flash Emitter",
|
||||||
|
"color": {
|
||||||
|
red: 228,
|
||||||
|
green: 128,
|
||||||
|
blue: 12
|
||||||
|
},
|
||||||
|
"maxParticles": 1000,
|
||||||
|
"lifespan": 0.1,
|
||||||
|
"emitRate": 1000,
|
||||||
|
"emitSpeed": 1,
|
||||||
|
"speedSpread": 0,
|
||||||
|
"emitOrientation": {
|
||||||
|
"x": -0.4,
|
||||||
|
"y": 1,
|
||||||
|
"z": -0.2,
|
||||||
|
"w": 0.7071068286895752
|
||||||
|
},
|
||||||
|
"emitDimensions": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"polarStart": 0,
|
||||||
|
"polarFinish": Math.PI,
|
||||||
|
"azimuthStart": -3.1415927410125732,
|
||||||
|
"azimuthFinish": 2,
|
||||||
|
"emitAcceleration": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"accelerationSpread": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"particleRadius": 0.01,
|
||||||
|
"radiusSpread": 0.005,
|
||||||
|
"radiusStart": 0.01,
|
||||||
|
"radiusFinish": 0.01,
|
||||||
|
"colorSpread": {
|
||||||
|
red: 100,
|
||||||
|
green: 100,
|
||||||
|
blue: 20
|
||||||
|
},
|
||||||
|
"alpha": 1,
|
||||||
|
"alphaSpread": 0,
|
||||||
|
"alphaStart": 0,
|
||||||
|
"alphaFinish": 0,
|
||||||
|
"additiveBlending": true,
|
||||||
|
"textures": "http://ericrius1.github.io/PartiArt/assets/star.png"
|
||||||
|
});
|
||||||
|
|
||||||
|
Script.setTimeout(function() {
|
||||||
|
Entities.editEntity(flash, {
|
||||||
|
isEmitting: false
|
||||||
|
});
|
||||||
|
}, 100)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -16,14 +16,16 @@
|
||||||
var _this;
|
var _this;
|
||||||
Rat = function() {
|
Rat = function() {
|
||||||
_this = this;
|
_this = this;
|
||||||
|
this.forceMultiplier = 10.0
|
||||||
};
|
};
|
||||||
|
|
||||||
Rat.prototype = {
|
Rat.prototype = {
|
||||||
|
|
||||||
onHit: function(myId, params) {
|
onHit: function(myId, params) {
|
||||||
var force = JSON.parse(params[0]);
|
var data = JSON.parse(params[0]);
|
||||||
|
var force = Vec3.multiply(data.forceDirection, this.forceMultiplier);
|
||||||
Entities.editEntity(this.entityID, {
|
Entities.editEntity(this.entityID, {
|
||||||
velocity: force.forceDirection
|
velocity: force
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ var rat = Entities.addEntity({
|
||||||
position: center,
|
position: center,
|
||||||
dimensions: {x: 0.4, y: 0.4, z: 0.4},
|
dimensions: {x: 0.4, y: 0.4, z: 0.4},
|
||||||
color: {red: 200, green: 20, blue: 200},
|
color: {red: 200, green: 20, blue: 200},
|
||||||
|
gravity: {x: 0, y: -9.8, z: 0},
|
||||||
collisionsWillMove: true,
|
collisionsWillMove: true,
|
||||||
script: scriptURL
|
script: scriptURL
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue