Volledige versie bekijken : hittest
ottorocket
%Europe/Berlin %609 %2006, 15:37
Ik zet deze code op elk van mijn gebouw in de movieclip van mijn achtergrond.
Maar het werkt niet, ik weet niet hoe ik moet verwijzen naar mijn tank. De tank staat gewoon op de scene, building_1 staat in de movieclip van "achtergrond", of kan ik de code gewoon bij mijn tank bijzetten en al mijn gebouwen dezelfde instance naam geven?
Hoe zouden jullie het doen?
onClipEvent (enterFrame) {
if (tank.hitTest(_root.building_1)) {
_root.building_1._alpha = 50;
} else {
_root.building_1._alpha = 100;
}
}
nahkranoth
%Europe/Berlin %630 %2006, 16:08
Dit moet werken als t goed is, maar de tank movieclip moet wel de instancenaam "tank" hebben.
(De code gewoon op elk gebouw neerzetten)
onClipEvent (enterFrame) {
if (this.hitTest(_root.tank)) {
this._alpha = 50;
} else {
this._alpha = 100;
}
}
ottorocket
%Europe/Berlin %678 %2006, 17:17
bedankt, het werkt,
maar hoe kan ik nu als ik tegen het huisje rij de snelheid van mijn tank naar 0 laten gaan??
Dus mijn opstelling
Je hebt mijn tank op de scene, op die scene staat ook mijn background MC, in die MC staan al mijn huizen.
In de movement code van mijn tank heb ik vanboven gezet
snelheid = 1;
dus als ik het huis met mijn tank raak zou het moeten worden
snelheid = 0;
maar dan is het probleem dat mijn tank niet meer kan wegrijden van het gebouw omdat hij daartegen staat
ottorocket
%Europe/Berlin %841 %2006, 21:11
iemand een idee?
Erwinzzz
%Europe/Berlin %967 %2006, 00:13
snelheid *=-1;
Dat stuitert ie er van af :P
Dan moet je er wel voor zorgen dat de snelheid geen constante waarde heeft. Ik bedoel dat waneer je bijvoorbeeld link ingedrukt is dat dan niet de x waarde telkens bijvoorbeeld 5 toeneemd, maar dat dan de snelheid 1 toeneemd, en bij een snelheid van 5 hij niet meer verhoogd. En de _x waarde is dan dus + snelheid. als je begrijpt wat ik bedoel..
dus: ipv:
if(Key.isDown(Key.LEFT)){
snelheid=5;
}
Moet je dit gebruiken:
snelheid=0;
instancename.onEnterFrame = function(){
if(Key.isDown(Key.LEFT)){
snelheid-=1;
}
if(snelheid<-5){
snelheid = -5;
}
if(snelheid>5){
snelheid =5;
}
if(this.hitTest(muur){
snelheid*=-1;
}
}
ottorocket
%Europe/Berlin %977 %2006, 00:27
ik heb dit maar het werkt niet
stop();
snelheid = 0;
loop.onEnterFrame = function() {
// bewegen
_root.loop._x = _root.tank._x;
_root.loop._y = _root.tank._y;
// draaien
x = _root._xmouse-_root.loop._x;
y = _root._ymouse-_root.loop._y;
angle = Math.atan(y/x)/(Math.PI/180);
if (x<0) {
angle += 180;
}
if (x>=0 && y<0) {
angle += 360;
}
_root.loop._rotation = angle+90;
};
tank.onEnterFrame = function() {
if (Key.isDown(Key.UP)) {
speed += 1;
}
if (Key.isDown(Key.DOWN)) {
speed -= 1;
}
if (snelheid<-5) {
snelheid = -5;
}
if (snelheid>5) {
snelheid = 5;
}
if (this.hitTest(background.gebouw)) {
snelheid *= -1;
}
if (Key.isDown(Key.LEFT)) {
this._rotation -= 10;
}
if (Key.isDown(Key.RIGHT)) {
this._rotation += 10;
}
speed *= .95;
_root.background._x += Math.sin(this._rotation*(Math.PI/180))*speed;
_root.background._y += Math.cos(this._rotation*(Math.PI/180))*speed*-1;
loop._x = tank._x;
loop._y = tank._y;
};
En de instance name is goed
Erwinzzz
%Europe/Berlin %468 %2006, 12:15
Ik zie et al: onderin stond nog speed.. maar boven in snelheid. de output van snelheid was waarschijnlijk wel goed , maar er werd niets mee gedaan...
stop();
snelheid = 0;
loop.onEnterFrame = function() {
// bewegen
_root.loop._x = _root.tank._x;
_root.loop._y = _root.tank._y;
// draaien
x = _root._xmouse-_root.loop._x;
y = _root._ymouse-_root.loop._y;
angle = Math.atan(y/x)/(Math.PI/180);
if (x<0) {
angle += 180;
}
if (x>=0 && y<0) {
angle += 360;
}
_root.loop._rotation = angle+90;
};
tank.onEnterFrame = function() {
if (Key.isDown(Key.UP)) {
speed += 1;
}
if (Key.isDown(Key.DOWN)) {
speed -= 1;
}
if (snelheid<-5) {
snelheid = -5;
}
if (snelheid>5) {
snelheid = 5;
}
if (this.hitTest(background.gebouw)) {
snelheid *= -1;
}
if (Key.isDown(Key.LEFT)) {
this._rotation -= 10;
}
if (Key.isDown(Key.RIGHT)) {
this._rotation += 10;
}
snelheid *= .95;
_root.background._x += Math.sin(this._rotation*(Math.PI/180))*snelheid;
_root.background._y += Math.cos(this._rotation*(Math.PI/180))*snelheid*-1;
loop._x = tank._x;
loop._y = tank._y;
};
ottorocket
%Europe/Berlin %506 %2006, 13:09
ok, ik moest nog 2 keer speed veranderen in snelheid en toen ging het
maar dit werkt maar bij 1 gebouw, ik heb er 2 ik heb ze allebij de instance naam "gebouw" gegeven
Erwinzzz
%Europe/Berlin %516 %2006, 13:24
of er zit een fout in jouw flash. maar je kan niet 2 dingen dezelfde instance name geven. je moet er gewoon 2 aparte hittest van maken...
if (this.hitTest(background.gebouw1)) {
snelheid *= -1;
}
if (this.hitTest(background.gebouw2)) {
snelheid *= -1;
}
ottorocket
%Europe/Berlin %517 %2006, 13:25
ok, dat zal dan wel een hele lange code worden als je veel gebouwen hebt
Erwinzzz
%Europe/Berlin %528 %2006, 13:41
das waar, daar zat ik ff over te denken, zou je ff willen checken of deze code ook werkt voor de hittest:
if (this.hitTest(background.gebouw1) or this.hitTest(background.gebouw2)) {
snelheid *= -1;
}
ottorocket
%Europe/Berlin %567 %2006, 14:37
ja die werkt ook
Erwinzzz
%Europe/Berlin %635 %2006, 16:15
aaah nou zo kan et dus ook :p
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.