Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. steveaustin
    3. Post
    S

    steveaustin

    @steveaustin

    • Profilo
    • Chi segue 0
    • Da chi è seguito 0
    • Discussioni 1
    • Post 1
    • Migliore 0
    • Gruppi 0
    Iscrizione Ultimo Accesso
    0
    Reputazione
    3
    Post
    0
    Visite al profilo
    0
    Da chi è seguito
    0
    Chi segue
    User Newbie

    Post creati da steveaustin

    • Gestione delle collisioni e bouncing di movieclip

      [Flash MX 2004, Actionscript 2.0]

      Ciao a tutti,
      vorrei realizzare una cosa di questo tipo:
      su uno stage vorrei "buttare" n movieclip dove n è un numero tra 5 e 15, questi movieclip sono semplicemente dei box colorati che si dispongono random. come in figura

      image

      ... e la parte semplice è finita

      Ora arriva il difficile:
      I movieclip non si devono sovrapporre ma rimbalzare tra loro, sbattere è disporsi sullo stage, in pratica, rimabalzano ma hanno una frizione che li rallentano.

      E qui sono un po' in panico, mi sono studiato formule di Newton varie, visto dei tutorial e cercato in giro , ma l'effetto di "scontro" tra i quadrati non riesco a capire come farlo. Non capisco come posso calcolare la nuova direzione e la nuova velocità di un movieclip dopo lo scontro come in figura:

      image

      Ho fatto questa [url=http://www.rossionline.net/temp/test2004.fla]PROVA dove ci sono 2 quadrati uno soggetto a gravità e uno no.
      entrambi rimbalzano , frizionano con i lati dello stage e questa è già x me una vittoria. vorrei che facesseto lo stesso tra loro ho provato ad usare l'hitTest ma sono un po' in alto mare:

      Il concetto è molto semplice: per ogni istanza di MC ho applicato i seguenti actionscript:

      
      
      onClipEvent(load) { 
      //inizializzo gli oggetti
      	var vel:Object = { x: 0, y: 0 }; 
      	var pos:Object = { x: _x, y: _y }; 
      	var old:Object = { x: _x, y: _y }; 
      	var radius:Number = this._width / 2; 
      	var movie:Object = { width: 400, height: 300 }; 
      	var dragging:Boolean = false; 
      }
      
      
      

      e poi con un EnterFrame gestisco il movimento

      
      
      
      onClipEvent(enterFrame) {
      if(!dragging) { 
       
       	vel.y *= _root.friction; 
        	vel.x *= _root.friction;
        		 
        
      	if( pos.y + radius > movie.height ) { 
                      //controllo se sbatte contro il pavimento
      		pos.y = movie.height - radius; 
      		vel.y *= -_root.restitution; 
      		vel.x *= _root.friction; 
      	} 
      	if( pos.x + radius > movie.width ) { 
                      //controllo se sbatte contro i lati 
      		pos.x = movie.width - radius; 
      		vel.x *= -_root.restitution; 
      	} 
      
      	if&#40; pos.x < radius &#41; &#123; 
      		pos.x = radius; 
      		vel.x *= -_root.restitution; 
      	&#125;
      	
      	if&#40;this.hitTest&#40;_root.Ball_MC&#41;&#41;&#123;
      	//controllo se c'è sovrapposizione dei MC
                     //QUI NON SO COME FARE PER GESTIRE IL RIMBALZO
      		vel.y *= -_root.restitution; 
      		vel.x *= _root.friction;
      		pos.x += vel.x; 
        		pos.y += vel.y;  
      	&#125;else&#123;
      		pos.x += vel.x; 
        		pos.y += vel.y;
      	&#125;
      
      
      	// Now update the ACTUAL position of the ball... 
      	_x = pos.x; 
      	_y = pos.y; 
      	
      	
      &#125;else&#123;
      	//trace&#40;"draggo"&#41;;
          old.x = pos.x; 
          old.y = pos.y; 
          pos.x = _x; 
          pos.y = _y; 
          vel.x = &#40; pos.x - old.x &#41; / 2; 
          vel.y = &#40; pos.y - old.y &#41; / 2; 
        &#125; 
      
      
      

      Qualcuno ha mai affrontato una cosa simile? Mi sapete dare una mano?

      postato in Web Marketing e Content
      S
      steveaustin