日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模拟天天酷跑游戏java_cocos2d 简单高仿天天酷跑游戏

發布時間:2025/3/12 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模拟天天酷跑游戏java_cocos2d 简单高仿天天酷跑游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.先直接上視頻來看下這個游戲的樣子(GIF已經不能滿足這個游戲的展示了)

跑酷游戲最糾結的是地圖,碰撞倒是簡單,可以自己寫或者使用box2d等物理引擎。跑酷游戲地圖的特點就是隨機性。但是隨機中又有策劃特意安排的部分,這樣讓玩家有小小驚喜。所以我就打算這樣實現:用地圖編輯器編寫個幾十個地圖,然后洗牌掉,從第一個開始取,直到最后最后一個后,再重新洗牌,取第一個。這樣就能突出天天跑酷游戲的特點。隨機中又有特定安排。

游戲中繪制地圖當然不能一次全部完成,那樣太慢了。手機屏幕橫向就那么長,初始化兩個地圖就夠了,當快要穿幫時,趕緊繪制一個新的地圖貼在第二個地圖后面。第一個地圖移到屏幕左邊時,可以刪掉了。這樣一直保持兩個地圖就夠了。跟背景重復移動類似。

2.自定義簡單地圖編輯器

決定使用地圖編輯器后,一個問題就是使用Tiled Map 還是自己做一個。

Tiled Map讓我不喜歡的地方是它每一個方塊都是一個精靈,這樣大塊的圖片會被分割成小塊的圖,效率很低。如果使用自定義object,又不能實時看地圖效果。就嘗試自己寫一個簡單的地圖編輯器來供這個游戲使用。

我的需求:可以拖動元素擺到地圖上,然后導出一個文件,里面有我自定義格式的內容,供我游戲中使用。

用什么來做是接下來的問題:

地圖編輯器可以用普通的Qt來實現,做出來類似Tiled Map的效果。Tiled Map是開源的,可以參考它實現一個。但是沒時間這樣搞啊。就用cocos2d來做地圖編輯器了,當然想要實現非常復雜的編輯器推薦還是參考Tiled Map。

簡單地做了一個地圖編輯器的Demo,發現比想象中的簡單:

就是初始一些小的精靈放在最右邊,不可移動。每次touch他們的時候,生成一個新的精靈,并且這個精靈是可以拖動的。這樣就可以任意擺放了。

地圖文件數據該用什么格式來存儲呢?

大致XML,Json是我考慮的兩種。覺得Json會好點,將來做Cocos2d JS,可以直接包含進來都不需要解析。當然C++這邊還是要解析的。Cocos2d 自帶 rapid json,解析也不是問題。就決定使用json了。

數據格式大致是這樣的:

{

"Bones": [{

"positionX": 1657.18,

"positionY": 345.044

}, {

"positionX": 1522.69,

"positionY": 336.114

}, {

"positionX": 1435.41,

"positionY": 259.934

}],

"TopBlocks": [{

"positionX": 2439.34

}],

"Blocks": [{

"blockType": 2

}, {

"blockType": 0

}, {

"blockType": 2

}}]

}

地圖編輯器是下面這樣的

簡單一個列表,點擊一個地圖,就編輯一個文件。因為是跑酷游戲,所以這個地圖編輯器比較長,有3000像素左右。當然還可以往右無限移動。

3.簡單碰撞

碰撞這里我也是自己寫的,沒有用物理引擎。也比較容易。一個小技巧是給主角一個nextPositin的變量。跑酷會不斷改變這個值,通過碰撞后,才真正把角色的position值設置為nextPosition。

一張圖來說:

for(Square* square : squares){

if(hero->nextRight() >= square->getLeft()){

//右邊碰撞

if(hero->right() < square->getLeft()){

if(hero->bottom() < square->getTop() && hero->top() > square->getBottom()){

hero->fixRightColl(square);//碰撞修復和觸發事件

}

}

if(hero->left() <= square->getRight()){

//下面碰撞

if(hero->bottom() >= square->getTop() && hero->nextBottom() <= square->getTop() && hero->top() > square->getTop()){

hero->fixTopColl(square);//碰撞修復和觸發事件

}

//上面碰撞

else if(hero->top() <= square->getBottom() && hero->nextTop() >= square->getBottom() && hero->bottom() < square->getTop()){

//碰撞后做的事情

}

}

}

}

當然碰撞金幣等東西,直接判斷兩個矩形是否相交即可。

for(Bone* bone : bones){

if(hero->right() >= bone->getLeft()){

if(bone->getRect().intersectsRect(hero->getRect())){

bone->removeFromParent();

bones.eraseObject(bone);

sRunGlobal->boneCount = sRunGlobal->boneCount + 1;

RunSound::playEffect(boneEffectName);

break;

}

}

}

4.對象重復使用

跑酷游戲設計到大量的對象創建,消除。一定要重復使用對象,搞個簡單的緩存池就行了,可以參考這篇文《cocos2d 緩存池 對象重復使用》

最后這個不公布源碼和資源。

總結

以上是生活随笔為你收集整理的模拟天天酷跑游戏java_cocos2d 简单高仿天天酷跑游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五月婷婷丁香激情 | 亚洲国产精品免费视频 | 啪啪的网站 | 国产三级三级三级 | aaaaaaa毛片| 日韩在线1 | 国产绿帽刺激高潮对白 | 欧美大片视频在线观看 | 亚洲欧美日韩在线不卡 | 韩国av网| 2022精品国偷自产免费观看 | 欧美影视一区 | 一二级毛片 | 一区二区 亚洲 | 毛片视频免费播放 | 国产精品久久久一区 | 黄色日批视频 | 国产精品一线二线三线 | 欧美亚洲免费 | 国产51自产区 | 国产极品免费 | 97精品人妻一区二区三区香蕉 | 在线观看日韩欧美 | 成人不卡视频 | 男人天堂新地址 | 一级精品视频 | 黄色在线播放 | 欧美三级免费看 | 中文字幕人妻一区二区三区视频 | 性欧美精品 | 精品久久久久久亚洲 | a天堂中文在线 | 成人免费a视频 | 国产精品免费在线播放 | 欧美成人乱码一二三四区免费 | 日韩二区三区四区 | 亚洲欧洲视频 | 国产黑丝一区二区 | 一级片在线观看免费 | 性猛交富婆╳xxx乱大交麻豆 | 亚洲国产精品久久久久爰色欲 | 国产精品入口日韩视频大尺度 | 四季av日韩精品一区 | 日日狠狠久久偷偷四色综合免费 | 亚洲欧美另类在线 | 男女视频在线免费观看 | 亚洲图片中文字幕 | 欧美xxxⅹ性欧美大片 | 日韩成人一区二区 | 欧美一区二区三区的 | 欧美性生活在线视频 | 日韩av一二三区 | 91亚洲精品乱码久久久久久蜜桃 | 涩涩视频软件 | 国产精品扒开腿做爽爽 | 久久久夜色精品亚洲 | 男人操女人视频网站 | 免费网站在线观看视频 | 国产一区二区日韩 | 日本精品人妻无码免费大全 | 中文精品久久 | 动漫美女隐私无遮挡 | 在线黄色免费网站 | 特黄大片又粗又大又暴 | 黄色网一级片 | 北条麻妃一区二区三区免费 | 丝袜综合网 | 日韩久久精品视频 | 成人动漫在线播放 | 天天干天天操天天碰 | 日韩欧美福利视频 | 91精品小视频| 修女也疯狂3免费观看完整版 | 成人日批| 日韩人妻无码一区二区三区 | 国产精品视频一区二区在线观看 | 亚洲色图久久 | 欧美黄色视屏 | 久久精品中文闷骚内射 | 久久久久久久久久成人 | 日韩在线观看一区二区 | 97自拍网 | 91av在线视频播放 | 综合网婷婷 | 农村寡妇一区二区三区 | 免费观看国产视频 | 黄色免费av | 亚洲视频观看 | 啪啪免费 | 天天综合网久久 | 天天插天天透 | 视频免费观看在线 | 国产日日干 | 日韩电影在线观看中文字幕 | 91视频专区 | 三点尽露的大尺度国产 | 91色爱 | 五月天视频 | 精品福利在线观看 |