激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

玩游戲就要把3D模型搬上2D舞臺 | 火星時代教育

發(fā)布時間:2024-05-16 12:35:52 瀏覽量:218次

引言

玩游戲就要把3D模型搬上2D舞臺

游戲開發(fā)中常常需要在UI界面上展示一個3D模型,比如時裝界面里角色換裝展示、Boss挑戰(zhàn)界面里選擇Boss展示等等。

本文將介紹一下在Cocos游戲開發(fā)中實現(xiàn)和平精英中3D模型渲染到2D界面的模型展示效果。

火星時代教育是一家專注數(shù)字藝術(shù)教育的培訓(xùn)機構(gòu),已有30年歷史。我們開設(shè)包括游戲設(shè)計、動畫培訓(xùn)、AI繪畫、影視后期制作等多門課程。想了解更多?點擊咨詢

本期知識點

1.RenderTexture

渲染貼圖是Camera或Canvas組件的渲染目標(biāo)對象,渲染管線會使用它的RenderWindow作為渲染的目標(biāo)窗口。

我們可以將相機畫面渲染到它上,然后將精靈Sprite的貼圖資源設(shè)置成它。

2.Camera

渲染場景中的相機對象,由項目層的Camera管理。

我們可以通過它的targetTexture指定此相機的渲染輸出目標(biāo)貼圖,默認(rèn)為屏幕。

3.SpriteFrame

精靈幀資源。

我們通過SpriteFrame的texture設(shè)置貼圖對象資源,可以是TextureBase類型。

玩轉(zhuǎn)游戲世界,讓3D模型登上2D舞臺

想要在你的游戲中實現(xiàn)和平精英中3D模型渲染到2D界面的模型展示效果嗎?下面為你詳細講述實現(xiàn)步驟。

1.環(huán)境

引擎版本:Cocos Creator 3.8.1

編程語言:TypeScript

2.資源準(zhǔn)備

創(chuàng)建一個新工程,按照指定結(jié)構(gòu)布局UI界面。確保你已準(zhǔn)備好所有資源。

將商城上的角色預(yù)制體嵌入到你的項目中,準(zhǔn)備好各個元素。

3.編寫代碼

根據(jù)需求編寫代碼,確保ModelRtt組件可以在ModelSprite上實現(xiàn)。設(shè)定各項屬性,包括模型路徑、偏移、視角高度等。

最后,加載模型并渲染到相應(yīng)的Sprite上。

export class ModelRtt extends Component {    @property(CCString)    modelUrl: string = "";    @property(CCFloat)    modelOffsetY: number = 0;    @property(CCFloat)    orthoHeight: number = 0;    modelSprite: Sprite = null;}

完成以上步驟后,3D模型渲染到2D界面的效果即可實現(xiàn)。

  • 創(chuàng)建大小為512、1024或2048的RenderTexture。
const size = this.node.getComponent(UITransform).contentSize;const modelRtt = new RenderTexture();modelRtt.reset({    width: size.width,    height: size.height});
  • 創(chuàng)建模型,并設(shè)置偏移。
const newNode = new Node();newNode.parent = find("/");const modelNode: Node = instantiate(prefab);modelNode.parent = newNode;modelNode.setPosition(new Vec3(0, this.modelOffsetY, 0));
  • 實現(xiàn)拖拽事件監(jiān)聽和模型轉(zhuǎn)動效果。
let flag = false;this.node.on(NodeEventType.TOUCH_START, () => { flag = true; }, this);this.node.on(NodeEventType.TOUCH_END, () => { flag = true; }, this);this.node.on(NodeEventType.TOUCH_MOVE, (event: EventTouch) => {    if (flag) {        modelNode.eulerAngles = new Vec3(0, modelNode.eulerAngles.y + event.getDeltaX(), 0);    }}, this);
  • 獲取創(chuàng)建的相機并設(shè)置相關(guān)參數(shù)。(動態(tài)添加的相機暫不做研究)
// const camera = new Node("Camera").addComponent(Camera); //todo:動態(tài)添加的Camera模型不會動 const camera = this.node.getComponentInChildren(Camera);camera.clearFlags = Camera.ClearFlag.SOLID_COLOR; //設(shè)置緩沖清楚標(biāo)志位camera.projection = renderer.scene.CameraProjection.ORTHO; //設(shè)置相機投影類型camera.orthoHeight = this.orthoHeight; //設(shè)置正交視角高度camera.clearColor = new Color(0, 0, 0, 0); //設(shè)置透明camera.targetTexture = modelRtt; //設(shè)置目標(biāo)RenderTexturecamera.node.parent = newNode;camera.node.position = new Vec3(0, 0, 10);
  • 設(shè)置目標(biāo)精靈的精靈幀。
const spriteFrame = new SpriteFrame();spriteFrame.texture = modelRtt;spriteFrame.flipUVY = true;this.modelSprite.spriteFrame = spriteFrame;

4.效果演示



【100個Cocos實例】實現(xiàn)和平精英中3D模型渲染到2D界面的模型展示效果
原文鏈接:
https://juejin.cn/post/7311603519601147945

熱門課程推薦

熱門資訊

請綁定手機號

x

同學(xué)您好!

您已成功報名0元試學(xué)活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定