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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

tilemap 菱形_使用Cocos creator制作【治愈七夕】-音乐游戏图形api绘制跳舞的线

發布時間:2025/3/15 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tilemap 菱形_使用Cocos creator制作【治愈七夕】-音乐游戏图形api绘制跳舞的线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

專欄概述及目錄:笑蒼天Smile:專欄概述及目錄?zhuanlan.zhihu.com

游戲截圖:

游戲地址:微信掃一掃

游戲源碼

游戲技術:前端引擎-Cocos creator,語言-Ts。

寫作目的:自我總結,游戲引流,經驗分享。

游戲分成Cocos creator引擎的通用技術,微信的第三方接入,治愈七夕共3個部分。前面兩部分可參考wind掃雷

治愈七夕商業模式

音樂加載

微信前后臺切換聲音處理

地形圖tilemap動態加載

角色坐標轉換成timemap的菱形坐標

圖形api繪制跳舞的線

商業模式:賣關卡,通過視頻廣告開啟關卡。結算、等待界面的橫屏以及插屏廣告。

音樂加載:因為微信代碼包有大小限制

var self = this;

var downTask = wx.downloadFile({

url: remoteUrl,

success(res){

console.log("res = ", res);

if (res.statusCode == 200){

let audio = wx.createInnerAudioContext();

audio.src = res.tempFilePath;

self.loadLvScene(audio);

}

}

})

downTask.onProgressUpdate((res)=>{

this.labTime.string = res.progress.toString()+"%";

})

微信前后臺切換聲音處理:

onAudioEvent(){

if (CC_WECHATGAME){

var self = this;

wx.onAudioInterruptionBegin(()=>{

console.log("self.audioTask.paused Begin = " + (self.audioTask && self.audioTask.paused));

self._gameStatus = 4;

});

wx.onAudioInterruptionEnd(()=>{

console.log("self.audioTask.paused End = " + (self.audioTask && self.audioTask.paused));

self._gameStatus = 1;

if (self.audioTask && self.audioTask.paused)

self.audioTask.play();

});

self.audioTask.onEnded(()=>{

self.gameOver();

});

// if (cc.sys.os === cc.sys.OS_ANDROID){

wx.onShow(()=>{

console.log("self.audioTask.paused onShow = " + (self.audioTask && self.audioTask.paused));

if (self.audioTask && self.audioTask.paused)

self.audioTask.play();

});

// }

}

}

地形圖tilemap動態加載:

onCreateTileMap (url) {

cc.loader.loadRes(url, cc.TiledMapAsset, (err, tmxAsset) => {

if (err) {

cc.error(err);

return;

}

// this.mapRoot.destroyAllChildren();

var node = new cc.Node();

this.mapRoot.addChild(node);

var tileMap = node.addComponent(cc.TiledMap);

tileMap.tmxAsset = tmxAsset;

this._tiledMap = tileMap;

this._layerFloor = this._tiledMap.getLayer("floor");

this._ndMap = node;

node.active = false;

this._ndMap.active = false;

this.showBg();

var mapSize = this._ndMap.getContentSize();

var tileSize = this._tiledMap.getTileSize();

this.mapRoot.y = mapSize.height/2;

this.ndPlayer.y = -mapSize.height/2 + tileSize.height/2;

this.ndLine.y = this.ndPlayer.y;

if (this.iLv == 3 || this.iLv == 4){

this.ndPlayer.getComponent(cc.Sprite).spriteFrame = this.sptGirl;

}else if (this.iLv == 5 || this.iLv == 6){

this.ndPlayer.getComponent(cc.Sprite).spriteFrame = this.sptBoth;

}

this.onAudioEvent();

});

}

角色坐標轉換成timemap的菱形坐標(這里有個簡單的矩形坐標到菱形坐標的轉換公式,推導過程網上一搜就有,大體是在此基礎上又進行了一些處理):

_getTilePos(posInPixel) {

var mapSize = this._ndMap.getContentSize();

var tileSize = this._tiledMap.getTileSize();

var multi = tileSize.width/tileSize.height;

posInPixel.x += mapSize.width/2;

posInPixel.y += mapSize.height/2;

var x = Math.floor(posInPixel.x / tileSize.width)*tileSize.width;

var y = Math.floor((mapSize.height - posInPixel.y) / tileSize.height)*tileSize.height;

var px = 0, py = 0; //將坐標轉換成所在菱形的中點

var nx = posInPixel.x-x;

var ny = mapSize.height-posInPixel.y-y;

if (ny <= tileSize.height-1/multi*nx){

if (ny <= 1/multi*nx){

px = x+tileSize.width/2;

py = y;

}else{

px = x;

py = y+tileSize.height/2;

}

}else{

if (ny <= 1/multi*nx){

px = x+tileSize.width;

py = y+tileSize.height/2;

}else{

px = x+tileSize.width/2;

py = y+tileSize.height;

}

}

var m = (px+multi*py-mapSize.width/2-multi*tileSize.height/2)/(multi*tileSize.height);

var n = (multi*py-px+mapSize.width/2-multi*tileSize.height/2)/(multi*tileSize.height);

// cc.log(posInPixel.x, posInPixel.y, x, y, px, py, m, n);

return cc.v2(m, n);

}

圖形api繪制跳舞的線:游戲中并沒有展現這個功能,所以這里放個gif動畫,或者自行下載源碼運行查看。

//思路:記錄要連接的坐標點,然后用圖形api逐個連接這些坐標點

//在需要記錄坐標點的地方調用this.record,在update中調用this.drawLine(cc.v2(dx, dy))

drawLine(v2){

this.line.clear();

var tileSize = this._tiledMap.getTileSize();

this.line.moveTo(this._vPos.x, this._vPos.y+tileSize.height/2);

for (let l = this._tPoint.length, i = l-1; i >= 0; i--) {

var p = this._tPoint[i];

p.x -= v2.x;

p.y -= v2.y;

this.line.lineTo(p.x, p.y);

if (p.y < 0) break;

}

this.line.stroke();

}

record(){

var tileSize = this._tiledMap.getTileSize();

this._tPoint.push(cc.v2(this._vPos.x, this._vPos.y+tileSize.height/2));

}

參考

總結

以上是生活随笔為你收集整理的tilemap 菱形_使用Cocos creator制作【治愈七夕】-音乐游戏图形api绘制跳舞的线的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 手机av网站| 99热在线这里只有精品 | 色综合av综合无码综合网站 | 日韩精品视频在线观看网站 | 国产wwwwwww| 在线免费观看福利 | 亚洲中文字幕无码av | 欧美天堂 | 麻豆传媒在线免费 | 成人在线小视频 | 国产男男gay体育生网站 | 久久中文字幕av | 四色永久访问 | 亚洲一区免费视频 | 蜜臀视频一区二区 | 一二三区在线 | 神秘马戏团在线观看免费高清中文 | 亚洲欧美日韩动漫 | 国产中文在线视频 | 国产欧美一区二区三区视频在线观看 | 久久综合精品国产二区无码不卡 | 免费观看一区二区三区毛片 | 婷婷成人综合 | 艳妇臀荡乳欲伦交换在线播放 | 国产三区在线视频 | 日韩αv | 色吧在线观看 | 国产乱淫av| 最新中文字幕在线观看视频 | 欧美三级三级三级爽爽爽 | 动漫精品一区二区三区 | 日韩欧美在线播放 | 亚洲精视频 | 午夜操一操 | 成年人免费在线看 | 欧美一区二区福利视频 | jizz国产在线观看 | 91丨porny在线 | 中文字幕91视频 | 非洲黑妞xxxxhd精品 | 91亚洲视频在线观看 | 午夜性色福利视频 | 殴美一级视频 | 国产99对白在线播放 | 成人h视频 | 一本视频| 免费在线观看中文字幕 | 激情另类视频 | 亚洲性猛交富婆 | 伊人春色网站 | 精品一区二区无码 | 久久久久久久无码 | 色网站视频| 清纯唯美亚洲综合 | 在线观看亚洲av每日更新 | 国产成人精品一区二区色戒 | 国产精品国语自产拍在线观看 | 爱啪啪导航 | 黄色网视频 | 日本在线一区 | 久久久香蕉视频 | 日韩一级片在线 | 日韩av网页 | 婷婷成人综合 | 国产区一二 | 国产激情影院 | 天天操天天操天天 | 国产精品高清在线观看 | 福利视频99 | 亚洲视频自拍 | 日韩中文字幕有码 | 久久成年 | 欧美一区二区在线观看视频 | 91资源站| 亚洲色图清纯唯美 | 欧美人妻少妇一区二区三区 | 向日葵视频在线 | 性欧美1819性猛交 | 国产91绿帽单男绿奴 | av生活片| 欧美精品一区在线观看 | 久久久久久久久久久久久久av | 在线观看亚洲色图 | 亚洲婷婷久久综合 | 国产精品麻豆视频 | 狠狠看 | 天天爽视频 | 交做爰xxxⅹ性爽 | 无码精品视频一区二区三区 | 亚洲第一成人在线 | 日本欧美色 | 欧美黄色大片视频 | 久草免费看 | 情五月 | 亚洲女人天堂网 | 亚洲一区综合 | 2025国产精品 | 波多野结衣简介 | 91日批视频|