Professional Documents
Culture Documents
Minggu Empat Boundaries
Minggu Empat Boundaries
alam setiap pergerakan objek tentunya dibatasi oleh lingkungan sekitar, seperti:
D tanah, rumah, dinding, lapangan, area bermain, dan lain-lain. Demikian juga
ketika menambilkan objek pada layar akan dibatasi oleh lingkungan objek yang
berupa batas layar. Dalam membuat game tentunya juga mempunyai lingkungan
batasan seperti area game, area pengaturan, kecepatan objek, gaya gesek benda
bergerak, dan sebagainya.
Pembuatan batasan yang paling sederhana adalah menjadikan seluruh canvas sebagai
area animasi. Selanjutnya untuk mengetahui batasan dari canvas dilakukan dengan
mengambil informasi dari canvas dan memasukkannya ke dalam variabel, misalnya:
Dengan informasi batasan layar yang kita peroleh, maka kita dapat mengubah gerakan
animasi kita, misalnya apabila bola menyentuh batas kanan layar maka arah bola akan
diubah menjadi ke kiri dapat dilakukan dengan menjalankan kode berikut.
Namun mengingat koordinat terletak pada titik pusat/tengah bola, maka ketika baru
setengah bola yang keluar dari canvas, splice bola akan sudah dilakukan. Oleh sebab itu,
anda dapat melakukan sedikit revisi mengenai pengujian keluar atau belumnya bola dari
canvas menjadi berikut.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Removal</title>
</head>
<body>
<textarea id="log"></textarea>
<script src="pendukung/utils.js"></script>
<script src="pendukung/ball.js"></script>
<script>
window.onload=function(){
var canvas=document.getElementById('canvas'),
context=canvas.getContext('2d'),
mouse=utils.captureMouse(canvas),
btsKanan=canvas.width
btsBawah=canvas.height,
gravitasi=0.02,
arrayBola=[],
jumBola=15,
log = document.getElementById('log');
for(var bolaR,i=0;i<jumBola;i++){
bolaR=new Ball(10,0xff0000);
bolaR.x = canvas.width/2;
bolaR.y = canvas.height/2;
bolaR.vx = 1 - Math.random() * 2;
bolaR.vy = 1-Math.random()*2;
arrayBola.push(bolaR);
function draw(bolaR,pos){
//bolaR.vy +=gravitasi;
bolaR.x += bolaR.vx;
bolaR.x += bolaR.vx;
bolaR.y += bolaR.vy;
if (arrayBola.length > 0) {
} else {
bolaR.draw(context);
(function drawFrame(){
window.requestAnimationFrame(drawFrame,canvas);
context.clearRect(0,0,btsKanan,btsBawah);
var i=arrayBola.length;
while(i--){
draw(arrayBola[i],i)
}());
};
</script>
</body>
</html>
Animasi yang berupa gerakan terus menerus seringkali harus bisa dihentikan oleh user,
misalnya animasi mobil yang dihentikan dengan menginjak rem, atau mobil bergerak di
rerumputan dan sebagainya. Teknik menghentikan gerakan ini dapat menggunakan
prinsip kerja gaya gesek/friction. Ada dua cara membuat friction pada gerakan objek.
(function drawFrame(){
window.requestAnimationFrame(drawFrame,canvas);
context.clearRect(0,0,canvas.width,canvas.height);
bolaR.vy +=gravitasi;
bolaR.x += bolaR.vx;
bolaR.y += bolaR.vy;
log.value = "bola.vy = " + bolaR.vy;
log2.value = "bola.vx = " + bolaR.vx;
if(bolaR.y > canvas.height - bolaR.radius){
bolaR.vy *=friksi;
}
if(bolaR.x > canvas.width - bolaR.radius || bolaR.x < 0+ bolaR.radius){
bolaR.vx *=friksi;
}
bolaR.draw(context);
}());
};</script>
</body>
</html>