modificare codice help!

Di: agne | 26/09/2020 18:11:10
ciao! ho trovato un tutorial per creare un giochino simile a Gold Miner però vorrei modificare il codice...ora mi spiego meglio..
consiste in questo: nello stage ci sono degli oggetti e in alto c'è un gancio che oscilla e grazie al clic del mouse scende e "aggancia" l'oggetto trascinandolo su.
nel tutorial dice di non creare oggetti di larghezza superiore a 50...facendo così però vengono troppo piccoli...se provo a cambiare le misure il gancio però non riesce a riportare su l'oggetto..cosa devo fare?
scrivo il codice
// boulders are stored in an array
// [0] is x pos
// [1] is y pos
// [2] is the width
// don't make boulders too large (<50) or the rewind won't work
// until you change slowdown formula
boulders = [[300, 300, 40], [200, 300, 40]];
for (x=0; x<boulders.length; x++) {
// creating the boulders
bould = _root.attachMovie("boulder","boulder_"+_root.getNextHighestDepth(),_root.getNextHighestDepth());
// placing them in random positions and with random dimensions
bould._x = boulders[x][0];
bould._y = boulders[x][1];
bould._width = boulders[x][2];
bould._height = boulders[x][2];
// setting picked attribute as false
// picked = false => the boulder has not been picked by the hook
// picked = true => the boulder has been picked
bould.picked = false;
// function to be executed at every frame for the boulder
bould.onEnterFrame = function() {
// if it's not been picked...
if (!this.picked) {
// check if the hook is in shoot mode and touched the boulder
// you'll see later what do hot_spot_x and hot_spot_y mean
if (pod_status == "shoot" and this.hitTest(hot_spot_x, hot_spot_y, true)) {
// set the hook on rewind mode
pod_status = "rewind";
// mark this boulder as picked
this.picked = true;
// determining the slowdown according to boulder size
slowdown = Math.floor(this._width/5);
}
} else {
// the boulder has been picked, so move it as the hook moves
this._x = hot_spot_x;
this._y = hot_spot_y;
// if the hook status changed to rotate
// (this means: if the hook took a boulder and pulled it out to surface...
if (pod_status == "rotate") {
// remove the boulder
this.removeMovieClip();
}
}
};
}
// placing the hook on stage
_root.attachMovie("pod", "pod", _root.getNextHighestDepth(), {_x:400});
// creating an empty movie clip to draw the rope
_root.createEmptyMovieClip("rod", _root.getNextHighestDepth());
// this is the rotation direction and speed
rotation_dir = 2;
// hook initial status
pod_status = "rotate";
// slowdown malus
slowdown = 0;
// hook movement speed
pod_speed = 4;
// function the hook will execute at every frame
pod.onEnterFrame = function() {
// getting pod status
switch (pod_status) {
case "rotate" :
// moving the hook to the left if player presses left
if (Key.isDown(Key.LEFT)) {
this._x -= pod_speed;
if (this._x<20) {
this._x = 20;
}
}
// moving the hook to the right if player presses left
if (Key.isDown(Key.RIGHT)) {
this._x += pod_speed;
if (this._x>480) {
this._x = 480;
}
}
// if the status is rotate, just rotate the hook according to rotation_dir
this._rotation += rotation_dir;
if (this._rotation == 80 or this._rotation == -80) {
// invert rotation_dir if the hook reaches its minimum (or maximum) rotation allowed
rotation_dir *= -1;
}
break;
case "shoot" :
// the hook has ben shoot
// (re)set slowdown malus to zero
slowdown = 0;
// moving the hook using trigonometry
this._x += 10*Math.cos(dir);
this._y += 10*Math.sin(dir);
// determining the hot spot of the hook
// the hot spot is the lowest corner of the hook (that acts like an harpoon in this case)
hot_spot_x = this._x+40*Math.cos(dir);
hot_spot_y = this._y+40*Math.sin(dir);
// if the hot spot goes off the stage
if (hot_spot_y>600 or hot_spot_x<0 or hot_spot_x>800) {
// then rewind the hook
pod_status = "rewind";
}
// draw a line from the hook starting position to its actual position
// this will simulate the rope
rod.clear();
rod.lineStyle(1, 0x000000);
// once it started from (250,0), now that hook can move I am starting from (start_rope_x, 0)
rod.moveTo(start_rope_x, 0);
rod.lineTo(this._x, this._y);
break;
case "rewind" :
// clearing the rope
rod.clear();
// rewinding the hook...
// it may seem a nonsense determining the hot spot now, but I need id
// to move the boulder (if I have any boulder attached to the hook)
hot_spot_x = this._x+40*Math.cos(dir);
hot_spot_y = this._y+40*Math.sin(dir);
// moving the hook with slowdown malus (if any)
this._x -= (10-slowdown)*Math.cos(dir);
this._y -= (10-slowdown)*Math.sin(dir);
// if the hook returns in its initial position...
if (this._y<0) {
// then reset its position and set its status to rotate
this._y = 0;
this._x = start_rope_x;
pod_status = "rotate";
} else {
// drawing a line as seen in shoot status, but only if the hook is still in the air
rod.lineStyle(1, 0x000000);
rod.moveTo(start_rope_x, 0);
rod.lineTo(this._x, this._y);
}
break;
}
};
// when the mouse is clicked...
_root.onMouseDown = function() {
// if the status is rotate...
if (pod_status == "rotate") {
// save hook heading and convert it to radians
dir = (pod._rotation+90)*0.0174532925;
// setting rope start position... the last hook position
start_rope_x = pod._x;
// set pod status to shoot
pod_status = "shoot";
}
};

Risposte


Nessuna risposta trovata!