Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DavidSena

Delimitar movimento

Recommended Posts

Por favor estou tentando desenvolver um projeto onde um carro que trafega por uma série de ruas entre quarteirões nos quais pode entrar em certas garagens .Pois bem ,a duvida é como posso fazer pra delimitar ao carro o que é parede e o que é garagem de forma que ele não ultrapasse as parede so trafegando pelas ruas e so entrando nas garagens.Ate o momento resolvi o problema manualmente separando cada limite de parede como um movieclip tipo : dando um comando que muda o _x e _y do carro caso o carro bata nela mas fica manualmente muito trabalhoso a medida que o projeto fica maior!Alguem tem alguma solução??Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o HitTest, olha vou colocar o movimento total do carro aqui e até um turbo se ele apertar a tecla space rs, coloca a instancia do carro pra "carro" sem aspas , e coloca um monte de movieclips instanciados que serão as parede1, parede2 etc, se o carro bater na parede ele volta pra uma coordenada x e y, mas você tb pode fazer o carrinho parar, dá uma olhada se isso te ajuda:

 

onClipEvent (load) {

speed = 10;

}

onClipEvent (enterFrame) {

xcarro = _root.carro._x;

ycarro = _root.carro._y;

if (Key.isDown(Key.UP)) {

with (_root.carro) {

_y -= speed;

_rotation = 0;

}

}

if (Key.isDown(Key.DOWN)) {

with (_root.carro) {

_y += speed;

_rotation = 180;

}

}

if (Key.isDown(Key.LEFT)) {

with (_root.carro) {

_x -= speed;

_rotation = -90;

}

}

if (Key.isDown(Key.RIGHT)) {

with (_root.carro) {

_x += speed;

_rotation = 90;

}

}

if (Key.isDown(Key.UP) and Key.isDown(Key.RIGHT) or Key.isDown(Key.UP) and Key.isDown(Key.LEFT) or Key.isDown(Key.DOWN) and Key.isDown(Key.RIGHT) or Key.isDown(Key.DOWN) and Key.isDown(Key.LEFT)) {

speed = 0;

} else {

speed = 10;

}

if (Key.isDown(Key.SPACE)) {

speed=25;

}

if (xcarro<0) {

_root.carro._x = 759;

} else if (xcarro>760) {

_root.carro._x = 1;

}

if (ycarro<0) {

_root.carro._y = 419;

} else if (ycarro>420) {

_root.carro._y = 1;

}

if (Key.isDown(Key.SPACE)){

speed = 20

}else{

speed = 10

}

if (_root.carro.hitTest(_root.parede1) or _root.carro.hitTest(_root.parede2) or _root.carro.hitTest(_root.parede3) or _root.carro.hitTest(_root.parede4) or _root.carro.hitTest(_root.parede5) or _root.carro.hitTest(_root.parede6)) {

with (_root.carro) {

_x=51;

_y=331;

_rotation=0;

 

}

}

}

 

 

qquer duvida poste aí novamente.

 

abraço,

 

Carneirinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Carneirinho eu tinha feito algo semelhante , tinha ficado funcional mas muito trabalhoso manualmente.Não pude utilizar seu codigo todo pois no comando :...if (_root.carro.hitTest(_root.parede1) or _root.carro.hitTest(_root.parede2) or _root.carro.hitTest(_root.parede3) or _root.carro.hitTest(_root.parede4) or _root.carro.hitTest(_root.parede5) or _root.carro.hitTest(_root.parede6)) {with (_root.carro) {_x=51;_y=331;_rotation=0;...quando o carro bate por dentro da parede acaba por atravessá-la para a posição _x=51 , _y=331.Abaei por duplicar a parede pra dentro tb.Poxa mas muito obrigado mesmo pela dica acabei por utilizar a parte do codigo referente ao turbo e qnd clica simultaneamente com 2 setas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.