l3on4rdo 0 Denunciar post Postado Julho 31, 2008 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 : 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
Matheus Brito 12 Denunciar post Postado Julho 31, 2008 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 : 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
l3on4rdo 0 Denunciar post Postado Julho 31, 2008 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
Matheus Brito 12 Denunciar post Postado Julho 31, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 1, 2008 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
didex 0 Denunciar post Postado Agosto 1, 2008 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
Matheus Brito 12 Denunciar post Postado Agosto 1, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 1, 2008 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
Matheus Brito 12 Denunciar post Postado Agosto 1, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 1, 2008 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
Matheus Brito 12 Denunciar post Postado Agosto 1, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 2, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 2, 2008 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
Matheus Brito 12 Denunciar post Postado Agosto 2, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 3, 2008 entao cara, esquece esse bola.x e .y ... mas entao, pq sera q ele sai do stage ?? mudando alguma variavel vai muda ??? abraços Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Agosto 3, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 3, 2008 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
Matheus Brito 12 Denunciar post Postado Agosto 4, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 4, 2008 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
l3on4rdo 0 Denunciar post Postado Agosto 7, 2008 consegui resolver. mod. pode fechar o top. Compartilhar este post Link para o post Compartilhar em outros sites