Missiles
This commit is contained in:
parent
003655b06a
commit
d8420594b6
|
@ -113,9 +113,9 @@ var flashtimer = timer.make(function() {
|
|||
|
||||
var paddle = World.spawn(gameobjects['paddle']);
|
||||
paddle.extents = lvlwidth/2 - f.edge2d.thickness;
|
||||
paddle.lasership();
|
||||
paddle.pos = [0,-lvlheight/2+paddle.height*4];
|
||||
paddle.setgrow(3);
|
||||
paddle.lasership();
|
||||
|
||||
Gamestate.spawnball = function() {
|
||||
var bb = World.spawn(gameobjects['ball']);
|
||||
|
|
2
bugs.md
2
bugs.md
|
@ -8,3 +8,5 @@
|
|||
- Specifically, want to monitor for screen change
|
||||
|
||||
- Look up collision functions dynamically instead of with registry
|
||||
|
||||
-Missiles flash for one frame where previous
|
||||
|
|
53
config.js
53
config.js
|
@ -36,6 +36,10 @@ gameobject.clone("brick", {
|
|||
|
||||
points: 50,
|
||||
|
||||
getshot() {
|
||||
this.kill();
|
||||
},
|
||||
|
||||
start() {
|
||||
this.char.stop();
|
||||
this.flash();
|
||||
|
@ -58,6 +62,34 @@ gameobject.clone("brick", {
|
|||
var act_x = Action.add_new("move");
|
||||
act_x.inputs.push("axis_ljoy");
|
||||
|
||||
gameobject.clone("missile", {
|
||||
collider: polygon2d.clone(),
|
||||
phys: 1,
|
||||
bwidth: 5,
|
||||
bheight: 15,
|
||||
speed: 200,
|
||||
|
||||
start() {
|
||||
this.collider.points = Geometry.box(this.bwidth, this.bheight);
|
||||
this.collider.sensor = true;
|
||||
},
|
||||
|
||||
collide(hit) {
|
||||
if ('getshot' in hit.obj) {
|
||||
hit.obj.getshot();
|
||||
this.kill();
|
||||
}
|
||||
},
|
||||
|
||||
draw() {
|
||||
Debug.box(this.pos, [this.bwidth, this.bheight], Color.cyan);
|
||||
},
|
||||
|
||||
update(dt) {
|
||||
this.pos = this.pos.add([0,this.speed*dt]);
|
||||
},
|
||||
});
|
||||
|
||||
var paddle = gameobject.clone("paddle", {
|
||||
collider: polygon2d.clone(),
|
||||
img: sprite.clone(),
|
||||
|
@ -128,10 +160,20 @@ var paddle = gameobject.clone("paddle", {
|
|||
|
||||
lasership() {
|
||||
this.laser = true;
|
||||
this.img.color = Color.Gameboy.light;
|
||||
},
|
||||
|
||||
unlasership() {
|
||||
this.laser = false;
|
||||
this.img.color = Color.white;
|
||||
},
|
||||
|
||||
shoot() {
|
||||
Log.warn("SHOOTING MISSILES");
|
||||
Log.warn("FIRING MISSILE");
|
||||
var m1 = World.spawn(gameobjects['missile']);
|
||||
// var m2 = World.spawn(gameobjects['missile']);
|
||||
m1.pos = this.pos.add([(this.length/2)-5,0]);
|
||||
// m2.pos = this.pos.add([5-(this.length/2),0]);
|
||||
},
|
||||
|
||||
sticky: false,
|
||||
|
@ -150,13 +192,18 @@ var paddle = gameobject.clone("paddle", {
|
|||
}
|
||||
},
|
||||
|
||||
start() {
|
||||
this.collider.sensor = true;
|
||||
},
|
||||
|
||||
collide(hit) {
|
||||
if (!(hit.obj.from === 'ball')) return;
|
||||
|
||||
var xdiff = hit.pos.x - this.pos.x;
|
||||
var hitangle = xdiff/this.length - 0.5;
|
||||
var hitangle = (xdiff/this.length + 0.5) * Math.PI;
|
||||
hitangle = Math.clamp(hitangle, Math.PI/6, 5*Math.PI/6);
|
||||
var speed = Vector.length(hit.obj.velocity);
|
||||
hit.obj.velocity = [Math.cos(hitangle)*speed, Math.sin(hitangle)*speed];
|
||||
hit.obj.velocity = [Math.cos(hitangle)*speed, -Math.sin(hitangle)*speed];
|
||||
hit.obj.velocity = hit.obj.velocity.scale(-1);
|
||||
var oldvel = hit.obj.velocity;
|
||||
var scaler = Math.max(Math.abs(xdiff)/30, 1.01);
|
||||
|
|
Loading…
Reference in a new issue