Ir para conteúdo

POWERED BY:

Arquivado

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

l3on4rdo

Lançamento oblíquo

Recommended Posts

Olá a todos !!

 

Galera,

 

estou com uma duvida tenebrosa !!

 

estou tentando fazer um lançamento oblíquo no flash via AS somente !!

 

Para quem não sabe, o lançamento oblíquo é quando, por exemplo, você joga uma pedra, ela atinge uma altura máxima e cai, como na figura abaixo :

 

Imagem Postada

 

Eu já tentei de tudo, mas o difícil, é que ele envolve seno, cosseno essas coisas dificeis...

 

se alguem souber pelo menos por onde começar já ficaria grato !!

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos !!

 

Galera,

 

estou com uma duvida tenebrosa !!

 

estou tentando fazer um lançamento oblíquo no flash via AS somente !!

 

Para quem não sabe, o lançamento oblíquo é quando, por exemplo, você joga uma pedra, ela atinge uma altura máxima e cai, como na figura abaixo :

 

Imagem Postada

 

Eu já tentei de tudo, mas o difícil, é que ele envolve seno, cosseno essas coisas dificeis...

 

se alguem souber pelo menos por onde começar já ficaria grato !!

 

obrigado

Posta seus códigos ai que eu te ajudo.

abs

 

E começe por onde você não sabe ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao kisuke esse eh o problema cara...

eu declarei algumas constantes e as formulas de fisica q fazem parte desse fenomeno(lançamento) !!

 

caso queira saber :

 

gravidade = 20
angulo = 0
t= 0
v=0
vy0 = v * Math.sin(angulo * 3.141593E+000 / 180);
vx0 = v * Math.cos(angulo * 3.141593E+000 / 180);
vy = vy0 - gravidade * t;

Só que testando isso nada ocorre, mesmo (obvimante) devidamente configurado o onEnterFrame no MC "obj" !!

 

Se puder me ajudar, agradeço !!

 

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao kisuke esse eh o problema cara...

eu declarei algumas constantes e as formulas de fisica q fazem parte desse fenomeno(lançamento) !!

 

caso queira saber :

 

gravidade = 20
angulo = 0
t= 0
v=0
vy0 = v * Math.sin(angulo * 3.141593E+000 / 180);
vx0 = v * Math.cos(angulo * 3.141593E+000 / 180);
vy = vy0 - gravidade * t;

Só que testando isso nada ocorre, mesmo (obvimante) devidamente configurado o onEnterFrame no MC "obj" !!

 

Se puder me ajudar, agradeço !!

 

Obrigado !

Você já sabe qual é a formúla?

gravidade não seria 10?

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

como assim mano ??? ql a formula ?

as formulas se eu nao me engano sao as q estao no 2º code;

 

ja a gravidade tanto faz, pq você quis dizer q a gravidade na terra vale 10, mas isso nem da nd....

 

com isso ja tem como fazer o objeto se mexer ??

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

l3onardo, veja neste exemplo, não é bem o que você quer, mas pra ter uma ideia, quanto maior a velocidade menor é o ângulo;

 

Criei um mc no palco e coloquei o nome de instancia de "objt", e criei uma layer nova pra adicionar as ações:

var velocidade:Number=10;
var gravidade:Number=1;

onEnterFrame=function() {
	if (_root.objt._y<750) {
	if (_root.objt._y<400) {
	_root.objt._y=_root.objt._y+gravidade;
	gravidade=gravidade+5;
	}
	
	if (_root.objt._y>400) {
	_root.objt._y=_root.objt._y+gravidade;
	gravidade=gravidade-5;
	}
	}
	
	
	if (_root.objt._y<750) {
	if (_root.objt._x<450) {
	_root.objt._x=_root.objt._x+velocidade;
	velocidade=velocidade+0.5;
	}
	
	if (_root.objt._x>450) {
	_root.objt._x=_root.objt._x+velocidade;
	velocidade=velocidade-0.5;
	}
	}
	
	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

como assim mano ??? ql a formula ?

as formulas se eu nao me engano sao as q estao no 2º code;

 

ja a gravidade tanto faz, pq você quis dizer q a gravidade na terra vale 10, mas isso nem da nd....

 

com isso ja tem como fazer o objeto se mexer ??

 

vlw

Olha só eu tava fazendo uns algoritmos aqui ai fiz tipo um lançamento obliquio, não sei se é do jeito que voce quer mas vou deixar o link pra você olhar.

abs

 

Link

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao cara,

 

se for td via AS eh isso msm !!!

dai eu vo da uma olhada e vo faze umas modificações...

 

caso eu tenha alguma duvida eu posto aki !

 

se tiver como passa o codigo ou o .fla sei la...

 

vlw aew !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao cara,

 

se for td via AS eh isso msm !!!

dai eu vo da uma olhada e vo faze umas modificações...

 

caso eu tenha alguma duvida eu posto aki !

 

se tiver como passa o codigo ou o .fla sei la...

 

vlw aew !!

Então fiz tudo via as sim agora to usando as 3.0, mas da pra você migrar pro 2.0 se você quiser vo postar os codigos.

Primeiro eu criei uma classe para o projetil no caso a bola

arquivo as

package{
	import flash.display.MovieClip;
	
	public class Ball extends MovieClip{
		
		function Ball(){
			//trace("bola Criada");
			}
	}
}

 

Depois eu criei um objeto dessa classe.

var ball:MovieClip = new Ball();
ball.x = ball.y = 100;
addChild(ball);
var velocidadeX:Number = 4;
var velocidadeY:Number = -10;
var acelerecaoY:Number = 1;
addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
function onLoop(evt:Event):void {
ball.x =ball.x + velocidadeX;
ball.y =ball.y + velocidadeY;
velocidadeY = velocidadeY+acelerecaoY;
}

abs e qualquer duvida pergunta aew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao,

 

mas como fazer para AS 2.0 ??

desculpa pelo incomodo mas eh q eu nao comecei a mexer com ele ainda...

 

so para saber, a bolinha parte do chão ou ela já sai do "teto" ???

 

e caso eu queira variar o angulo de partida, como fazer ??

 

obrigado até agora !

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao,

 

mas como fazer para AS 2.0 ??

desculpa pelo incomodo mas eh q eu nao comecei a mexer com ele ainda...

 

so para saber, a bolinha parte do chão ou ela já sai do "teto" ???

 

e caso eu queira variar o angulo de partida, como fazer ??

 

obrigado até agora !

1-Da pra você migrar tranquilamente pois nao tem nada de dificil no algoritmo.

2-A bolinha parte da posicao 100 como pode ver pelo codigo ball.x=ball.y=100;

3-Como pode perceber pelo código nao tem angulo, ou seja eu simulei o lançamento obliquio apenas com a gravidade.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois eh...

eu tentei migrar para AS 2.0 mas nao aparece nd....

tem como me passa o codigo ??

 

reparei sim q a bolinha parte do 100, entao obviamente pondo zero ela parte do zero.

 

eu nao entendii essa parte :

 

ball.x = _loc_1;

 

o q é _loc_1 ??

 

se tiver como me ajudar a lançar com o angulo, ficarei grato !!

 

obrigado e desculpa pelo incomodo !

Compartilhar este post


Link para o post
Compartilhar em outros sites

esquece o post anterior !!

 

consegui fazer o lançamento vertical de um modo totalmente diferente !!

 

segue cód :

 

onLoad = function(){
	/*++++++++++++++++++++++++++++++++++++*/
	 Vo = 30
	 g = 20
	 t = 0
	 teta = 60
	 /*++++++++++++++++++++++++++++++++++++*/
}
onEnterFrame = function(){
	g = g-2.5
	t = t+0.1
	/*---------------------------*/
	Vy = Vo*Math.sin(teta) - g*t
	Vx = Vo*Math.cos(teta)
	/*ay = Vo * Math.sin(teta) * t - (g*Math.pow(t,2))/2
	ax = (Vo * Math.cos(teta)) * t
	/*---------------------------*/
	bola.x = (Vo * Math.cos(teta)* t)
	bola.y = Vo * Math.sin(teta) * t - (g*Math.pow(t,2))/2
	bola._x = bola._x - Vx
	bola._y = bola._y +Vy	
}

só tem um problema,

se eu mudo o teta, se nao for exatamente 60, a bola vai pra fora do stage;

como mudar isso ??

 

vlw e espero resposta !

Compartilhar este post


Link para o post
Compartilhar em outros sites

esquece o post anterior !!

 

consegui fazer o lançamento vertical de um modo totalmente diferente !!

 

segue cód :

 

onLoad = function(){
	/*++++++++++++++++++++++++++++++++++++*/
	 Vo = 30
	 g = 20
	 t = 0
	 teta = 60
	 /*++++++++++++++++++++++++++++++++++++*/
}
onEnterFrame = function(){
	g = g-2.5
	t = t+0.1
	/*---------------------------*/
	Vy = Vo*Math.sin(teta) - g*t
	Vx = Vo*Math.cos(teta)
	/*ay = Vo * Math.sin(teta) * t - (g*Math.pow(t,2))/2
	ax = (Vo * Math.cos(teta)) * t
	/*---------------------------*/
	bola.x = (Vo * Math.cos(teta)* t)
	bola.y = Vo * Math.sin(teta) * t - (g*Math.pow(t,2))/2
	bola._x = bola._x - Vx
	bola._y = bola._y +Vy	
}

só tem um problema,

se eu mudo o teta, se nao for exatamente 60, a bola vai pra fora do stage;

como mudar isso ??

 

vlw e espero resposta !

Essas duas linhas abaixo ai nao entendi bola.x e bola.y??? nao seria bola._x e bola._y.

bola.x = (Vo * Math.cos(teta)* t)
bola.y = Vo * Math.sin(teta) * t - (g*Math.pow(t,2))/2

Todos teta que testei a bola sai do stage isso se deve ao OnEnterFrame, porque se você nao desativa-lo ele continuara ate que a bola sai do stage, voce deve testar alguma condição e deleta lo.

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao cara, esquece esse bola.x e .y ...

 

mas entao, pq sera q ele sai do stage ??

mudando alguma variavel vai muda ???

 

abraços

 

Cara eu já te respondi essa dúvida no meu último post. Você deve tentar entender a essência da coisa, se liga:

 

1-A bola sai do stage, por causa do onEnterFrame, pois ele continua executando infinitamente se nao houver uma coisa que o faça parar entendeu.

2-Se você mudar uma variavel nada vai mudar, pois nao tem nada a ver com nenhuma variavel.

 

3- o que você deve fazer é testar uma condição para quando essa condição for avaliadacomo true a bola parar tipo assim:

 

var Vo = 30;
var g = 20;
var t = 0;
var teta = 60;
  

bola.onEnterFrame = function(){
	trace(bola._x);
	g = g-2.5;
	t = t+0.1;
	var Vy = Vo*Math.sin(teta) - g*t;
	var Vx = Vo*Math.cos(teta);
	bola._x = bola._x - Vx;
	bola._y = bola._y +Vy;
	
	[b]if(bola._x==646.1){
		delete bola.onEnterFrame;
	}[/b]	
	
	
	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora entendi !!

 

mas se nao tem nada a ver, como fazer ter ???

e outra coisa, obviamente a gravidade nao muda num lançamento obliquo, mas o problema é q caso você nao desconte um valor (2 no caso), a bolinha sobe e nao cai !!

como faz para arrumar isto tmb ??

 

obrigado e agurado retorno !

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora entendi !!

 

mas se nao tem nada a ver, como fazer ter ???

e outra coisa, obviamente a gravidade nao muda num lançamento obliquo, mas o problema é q caso você nao desconte um valor (2 no caso), a bolinha sobe e nao cai !!

como faz para arrumar isto tmb ??

 

obrigado e agurado retorno !

 

abraços

Não entendi nada e me parece que já resolvi sua dúvida.

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi nada e me parece que já resolvi sua dúvida.

abs

Cara o que eu quis dizer é que fisicamente falano, a gravidade não muda, já que o espaço em que ocorre a ação é o mesmo.

Só que no meu script, se eu não diminuir a gravidade, a bola sobe e não desce !

 

CODE
onEnterFrame = function(){

 

/*---------------------------*/

g = g - 2

t = t+1.500000E-001

Vy = Vo*Math.sin(teta) - g*t

Vx = Vo*Math.cos(teta)

/*ay = Vo * Math.sin(teta) * t - (g*Math.pow(t,2))/2

ax = (Vo * Math.cos(teta)) * t

o que eu quis dizer é no g = g-2 !!

 

Como fazer com que a bolinha continue caindo sem ter q mudar a gravidade ??

 

Obs. Caso minha dúvida tivesse sido solucionada, eu não teria perguntado de novo.

 

Obrigado

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.