基于jQuery制作自己的web游戏引擎-贰
本章节衔接基于jQuery制作自己的web游戏引擎
第二部分:编写物理引擎
作为一个游戏引擎,物理部分是必不可少的,所以,我们即将开始编写physics.js
首先要开始编写碰撞检测,定义一个函数:
function collision(obj1,obj2) {
if (
((obj1.x + obj1.width) >= obj2.x) &&
(obj1.x <= (obj2.x + obj2.width)) &&
((obj1.y + obj1.height) >= obj2.y) &&
(obj1.y <= (obj2.y + obj2.height))
)
{
return true;
} else {
return false;
}
}
那么如果想要知道一个game object是否有撞上任意其他游戏对象呢?
function collisionObj(obj1) {
var collObj = [];
for (var i = 0 ; i < gameObjs.length ; i++){
if (gameObjs[i] !== obj1){
if (collision(obj1,gameObjs[i])){
collObj.push(gameObjs[i].name);
}
}
}
return collObj;
}
在现实生活中,两个物体相撞后,会因反作用力向相反方向运动,所以可以写一个rebound()函数进行该操作
function rebound(obj1,obj2) {
obj1.define("force",true);
obj2.define("force",true);
if (collision(obj1,obj2)){
obj1.angle = 180 - obj1.angle;
obj2.angle = 180 - obj2.angle;
var tmp = obj1.speed;
obj1.speed += obj2.speed;
obj2.speed += tmp;
}
}
与reboundUpdate()
function reboundUpdate(obj1) {
if (!obj1.get("force")){
return null;
}
var rebObj = [];
for (var i = 0 ; i < gameObjs.length ; i++){
if (gameObjs[i] !== obj1){
rebound(obj1,gameObjs[i])
}
}
return rebObj;
}
现在物理引擎搭建完毕,接下来就可以编写游戏啦~
physics部分[完]
点击查看更多内容
2人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦