Animasi Sekumpulan Bola

Flash Tutorial - Membuat Animasi Sekumpulan Bola

Tutorial kali ini tentang pembuatan animasi “Sekumpulan Bola”, dan software yang akan digunakan adalah Adobe Flash cs 6, actionscript 2.0…

Seperti Apakah Animasi Sekumpulan Bola yang Saya Buat ?

Disini kita hanya membuat sebuah objek yang telah di convert ke MovieClip dan diberikan nama AS Lingkage-nya. Nama pada As Linkage nantinya akan dipanggil ke lembar kerja setelah program dijalankan.

Mengapa hanya sebuah objek movieclip yang dibuat ? 

Alasannya, karena objek yang ada didalam library akan dipanggil bedasarkan jumlah yang diinginkan.
Artinya, berawal dari satu bola kemudian bola begerak bebas dan bola akan menduplikat dirinya sendiri. Perintah AttachMovie membantu untuk menduplikat movie yang akan dipanggil.
Animasi Sekumpulan Bola menjadi salah satu contoh yang digunakan dalam pembuatan game animasi, misalnya untuk membuat musuh dengan jumlah yang tidak terbatas atau bisa digunakan juga untuk membuat koin dengan jumlah yang banyak.

Gambar - Animasi sekumpulan bola
Gambar - Animasi sekumpulan bola

Seperti yang Anda lihat pada gambar diatas terdapat banyak objek bola yang telah dipanggil ke Stage. Animasi tersebut tidak menggunakan teknik Motion Tween maupun Teknik Shape Tween. Dari semua itu didukung adanya script yang mengatur keluarnya jumlah bola didalam stage.


Adapun penggalan script untuk membuat animasi “Sekumpulan bola” adalah sebagai berikut :



stop();
t = 0;
dx = 0;
//Creating variables
_root.attachMovie("blip","blip",_root.getNextHighestDepth(),{_x:1500, _y:200});
_root.createEmptyMovieClip("container_movie",_root.getNextHighestDepth());
//attaching the movieclips
blip.onEnterFrame = function() {
                //this is the function that executes every frame
                if (Math.random()*1000<100 and t<50) {
                                //This condition adds another circle after a certain random interval till total circles are 50

circle = container_movie.attachMovie("circle", "circle"+t, container_movie.getNextHighestDepth(), {_width:a, _height:b, _x:(20+Math.random()*300), _y:(20+Math.random()*300), _rotation:Math.random()*300});
                                t++;
                                circle.xspeed = Math.random()*9;
                                circle.yspeed = Math.random()*9;
                                //Creating the circle with random x and y speeds.
                                circle.onEnterFrame = function() {
                                                this._x -= this.xspeed;
                                                this._y -= this.yspeed;
                                                //Motion of the circles
                                                if (this._x<10) {
                                                                this._x = 10;
                                                                this.xspeed = -this.xspeed;
                                                }
                                                if (this._x>490) {
                                                                this._x = 490;
                                                                this.xspeed = -this.xspeed;
                                                }
                                                if (this._y<10) {
                                                                this._y = 10;
                                                                this.yspeed = -this.yspeed;
                                                }
                                                if (this._y>390) {
                                                                this._y = 390;
                                                                this.yspeed = -this.yspeed;
                                                }
                                                //Making sure the circle won't go out of the boundaries.
                                };
                }
                //From here I start checking for collisions of the circles
                for (i=0; i<t; i++) {
                                a = _root.container_movie["circle"+i];
                                for (j=i+1; j<t; j++) {
                                                b = _root.container_movie["circle"+j];
                                                var dx = b._x-a._x;
                                                var dy = b._y-a._y;
                                                var dist = Math.sqrt(dx*dx+dy*dy);
                                                //Checking the distances between two circles.
                                                if (dist<20) {
                                                                _root.solveBalls(a,b);
                                                                //The circles I've taken are of radius 10, so if distance <20 then they collide, so I call a function.
                                                }
                                                else {
                                                }
                                }
                }
};
//This function is provided by kazama_bee at mochi forums. I'll try my best to explain it
function solveBalls(ballA, ballB) {
                var x1 = ballA._x;
                var y1 = ballA._y;
                var dx = ballB._x-x1;
                var dy = ballB._y-y1;
                var dist = Math.sqrt(dx*dx+dy*dy);
                radius = 10;
                //it calculates the distance, i could have passed it to the function but it works this way
                normalX = dx/dist;
                normalY = dy/dist;
                midpointX = (x1+ballB._x)/2;
                midpointY = (y1+ballB._y)/2;
                //Now this calculates the normal and mid points..
                ballA._x = midpointX-normalX*radius;
                ballA._y = midpointY-normalY*radius;
                ballB._x = midpointX+normalX*radius;
                ballB._y = midpointY+normalY*radius;
                //shifts the two circle two a different location so they don't hit each other
                dVector = (ballA.xspeed-ballB.xspeed)*normalX+(ballA.yspeed-ballB.yspeed)*normalY;
                dvx = dVector*normalX;
                dvy = dVector*normalY;
                //This calculates the new speeds for the circles
                ballA.xspeed -= dvx;
                ballA.yspeed -= dvy;
                ballB.xspeed += dvx;
                ballB.yspeed += dvy;
                //assigns the new values
}


Seperti yang telah saya ceritakan diatas, terdapat objek bola yang akan digunakan kedalam stage. Objek Bola tersebut dengan nama circle, dan As Linkage-nya adalah Circle..

Gambar - Objek movieclip yang digunakan adalah Circle
Gambar - Objek movieclip yang digunakan adalah Circle


Mungkin hanya ini yang bisa saya berikan., kurangnya mohon maaf...

Flash Tutorial || Create Animation And Game || Teknik Membuat Animasi

Animasi Sekumpulan Bola Animasi Sekumpulan Bola Reviewed by Ardy S on November 11, 2015 Rating: 5

No comments:

Powered by Blogger.