box2D斜面摩擦力和sprite朝向的兼顧取舍
來源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-09 08:09:01
box2D斜面摩擦力和sprite朝向的兼顧取舍
box2D斜面摩擦力和sprite朝向的兼顧取舍:問題起源: 一般游戲的主角player的b2Body的fixedRotation屬性都設(shè)置為true,即不能旋轉(zhuǎn),這樣可以保證player在受到物理沖力的時(shí)候不會(huì)扭來扭去,比如超級(jí)瑪麗他的人物模型始終是直立的。當(dāng)player遇到斜面物體時(shí),它和斜面之間只有一個(gè)接觸點(diǎn),這樣就沒有摩
導(dǎo)讀box2D斜面摩擦力和sprite朝向的兼顧取舍:問題起源: 一般游戲的主角player的b2Body的fixedRotation屬性都設(shè)置為true,即不能旋轉(zhuǎn),這樣可以保證player在受到物理沖力的時(shí)候不會(huì)扭來扭去,比如超級(jí)瑪麗他的人物模型始終是直立的。當(dāng)player遇到斜面物體時(shí),它和斜面之間只有一個(gè)接觸點(diǎn),這樣就沒有摩
問題起源: 一般游戲的主角player的b2Body的fixedRotation屬性都設(shè)置為true,即不能旋轉(zhuǎn),這樣可以保證player在受到物理沖力的時(shí)候不會(huì)扭來扭去,比如超級(jí)瑪麗他的人物模型始終是直立的。當(dāng)player遇到斜面物體時(shí),它和斜面之間只有一個(gè)接觸點(diǎn),這樣就沒有摩
問題起源:
一般游戲的主角player的b2Body的fixedRotation屬性都設(shè)置為true,即不能旋轉(zhuǎn),這樣可以保證player在受到物理沖力的時(shí)候不會(huì)扭來扭去,比如超級(jí)瑪麗他的人物模型始終是直立的。當(dāng)player遇到斜面物體時(shí),它和斜面之間只有一個(gè)接觸點(diǎn),這樣就沒有摩擦力,這會(huì)造成player運(yùn)動(dòng)狀態(tài)的失真。
如果將player的fixedRotation設(shè)置為false,即可以旋轉(zhuǎn),這時(shí)摩擦力正常,但player的sprite圖片也會(huì)跟著旋轉(zhuǎn),有時(shí)卻希望sprite仍保持直立。
解決方法:
一、 始終fixedRotation=true,
當(dāng)player在斜面上時(shí),將player的body構(gòu)造成底部為斜邊的polygon,并且傾斜角度和斜面角度相同。在平面上時(shí),body底部改為平面。
缺點(diǎn):1. 不能適應(yīng)各種角度的斜面。
2. 由于Box2D中b2Fixture不能變形,b2Body對(duì)象想要改變形狀,其中包含的b2Fixture對(duì)象要反復(fù)創(chuàng)建,銷毀,工作繁復(fù),效率不高。
二、當(dāng)player在平面上時(shí),fixedRotation=true;
當(dāng)player在斜面上時(shí),fixedRotation=false;然后player的sprite圖片根據(jù)斜面的角度轉(zhuǎn)動(dòng)相應(yīng)的角度。
具體做法大概是:建一個(gè)斜面類繼承自CCSprite,類成員包括斜面的b2Body,斜面的角度degree,類方法包括斜面的創(chuàng)建方法createInclinePlane(),在這個(gè)方法中得到斜面的degree。在需要用到degree的時(shí)候,用degree的getor()可以獲取。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
box2D斜面摩擦力和sprite朝向的兼顧取舍
box2D斜面摩擦力和sprite朝向的兼顧取舍:問題起源: 一般游戲的主角player的b2Body的fixedRotation屬性都設(shè)置為true,即不能旋轉(zhuǎn),這樣可以保證player在受到物理沖力的時(shí)候不會(huì)扭來扭去,比如超級(jí)瑪麗他的人物模型始終是直立的。當(dāng)player遇到斜面物體時(shí),它和斜面之間只有一個(gè)接觸點(diǎn),這樣就沒有摩