..:: MX Studio Fóruns ::..: Colisão entre 2 carros - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Colisão entre 2 carros Detectar colisão e reação

#1 User is offline   Daniel Malakias 

  • Group: Membros
  • Posts: 1
  • Joined: 27-April 11

Posted 27 April 2011 - 05:38 PM

Olá pessoal. Espero que alguém possa me ajudar. Já pesquisei um monte pela net e não consegui achar a solução para o meu problema. A idéia é que tenho 2 carros no palco (carro e nascar2), o mc carro eu movimento com o teclado (frente, trás, esquerda, direita), o mc nascar2 fica paradinho ali no lugar dele. Porém, se o carro encostar em nascar2 haverá uma colisão. Até aqui tudo bem, por pontos estou detectando a colisão entre os 2 movieclips tranquilo, mas o meu problema é o depois. Quero que quando o carro bater em nascar2, tanto um quanto o outro tenham uma reação. Ex: se eu bater com carro em nascar2 de frente, o carro irá empurrar nascar2 para trás e parar. Em baixo o código do que já fiz.
var decay:Number = 0.85;
var manuverSpeed:Number = 5;
var speed = 0;
var speedMax = 10;
var accel:Number = 2;
var nascar2Speed = 0;

nascar2.pointLeft = {x:-31, y:0};
nascar2.localToGlobal(nascar2.pointLeft);
nascar2.pointRight = {x:31, y:0};
nascar2.localToGlobal(nascar2.pointRight);
nascar2.pointFront = {x:0, y:-67};
nascar2.localToGlobal(nascar2.pointFront);
nascar2.pointBack = {x:0, y:70};
nascar2.localToGlobal(nascar2.pointBack);


lpx = nascar2.pointLeft.x;
lpy = nascar2.pointLeft.y;
rpx = nascar2.pointRight.x;
rpy = nascar2.pointRight.y;
fpx = nascar2.pointFront.x;
fpy = nascar2.pointFront.y;
bpx = nascar2.pointBack.x;
bpy = nascar2.pointBack.y;


carro.onEnterFrame = function() {
	speed *= decay;
	xSpeed = speed*Math.sin(this._rotation*(Math.PI/180));
	ySpeed = speed*Math.cos(this._rotation*(Math.PI/180));

	this._y -= ySpeed;
	this._x += xSpeed;
	
	carro.freio_nascar1._alpha = 100;
	carro.freio_nascar2._alpha = 100;
	
	carro.re_light1._alpha = 0;
	carro.re_light2._alpha = 0;
	
	var cor:Color = new Color(carro.farois_nascar1);
	cor.setRGB(0xc8c8c8);
	
	var cor2:Color = new Color(carro.farois_nascar2);
	cor2.setRGB(0xc8c8c8);
};
this.onEnterFrame = function() {
	input();
	
	if (carro.hitTest(lpx, lpy, true)) {

	}
	if (carro.hitTest(rpx, rpy, true)) {

	}
	if (carro.hitTest(fpx, fpy, true)) {

	}
	if (carro.hitTest(bpx, bpy, true)) {

	}
};
function input() {
	if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP) || Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN)) {
		carro._rotation -= manuverSpeed;
	} else if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP) || Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN)) {
		carro._rotation += manuverSpeed;
	}
	
	if (Key.isDown(Key.UP)) {
		if (speed<speedMax) {
			speed += accel;
			carro.freio_nascar1._alpha = 0;
			carro.freio_nascar2._alpha = 0;
			
			carro.re_light1._alpha = 0;
			carro.re_light2._alpha = 0;
			
			var cor:Color = new Color(carro.farois_nascar1);
			cor.setRGB(0x000099);
			
			var cor2:Color = new Color(carro.farois_nascar2);
			cor2.setRGB(0x000099);
		}
	} else if (Key.isDown(Key.DOWN)) {
		if (speed>-speedMax) {
			speed -= accel;
			carro.freio_nascar1._alpha = 0;
			carro.freio_nascar2._alpha = 0;
			
			carro.re_light1._alpha = 100;
			carro.re_light2._alpha = 100;
		}
	}
}

0

#2 User is offline   Paulo de tarso Jr 

  • Group: Membros
  • Posts: 60
  • Joined: 07-August 09

Posted 05 May 2011 - 11:52 AM

Para ficar mais real eu faria com box2D.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)