亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

基于jQuery制作自己的web游戲引擎-貳

基于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人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
54
獲贊與收藏
183

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消