国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信3D小游戲系列一:在微信小游戲中使用threejs

這篇具有很好參考價值的文章主要介紹了微信3D小游戲系列一:在微信小游戲中使用threejs。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


環(huán)境配置

下載開發(fā)者工具

下載地址: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

微信小程序/小游戲的開發(fā)需要在專門的開發(fā)者工具中,可下載最近更新的穩(wěn)定版,若之前沒有使用過微信開發(fā)的話,進入 小游戲開發(fā)指南填寫和提交相關的注冊信息。

如圖新建一個空目錄,選擇該目錄建立自己的項目。
微信3D小游戲系列一:在微信小游戲中使用threejs
選擇小游戲打開后會默認進入一個示例小游戲,在模擬器中可以將聲音關閉:
微信3D小游戲系列一:在微信小游戲中使用threejs

目錄結構

微信3D小游戲系列一:在微信小游戲中使用threejs
以上為小游戲的目錄,紅色方框里的為小程序的常規(guī)配置,具體內容見文檔:微信配置文檔。其它目錄:

  • audio :存放音頻文件
  • images: 圖片資源
  • js: 游戲邏輯的具體實現(xiàn),需要的工具類庫等
  • databus.js:管控游戲狀態(tài)
  • game.js:打包入口
  • game.json:微信小游戲配置,參考文檔:小游戲配置

./js中內容如下,里面基本所有的代碼我們都可以舍棄,但是有一個依賴包很重要:weapp-adapter.js 。這個包為微信小程序環(huán)境創(chuàng)建了類似與WEB瀏覽器的一系列 API 與 DOM,其中就包括了 canvas 。

./js
├── base                                   // 定義游戲開發(fā)基礎類
│   ├── animatoin.js                       // 幀動畫的簡易實現(xiàn)
│   ├── pool.js                            // 對象池的簡易實現(xiàn)
│   └── sprite.js                          // 游戲基本元素精靈類
├── libs
│   ├── symbol.js                          // ES6 Symbol簡易兼容
│   └── weapp-adapter.js                   // 小游戲適配器
├── npc
│   └── enemy.js                           // 敵機類
├── player
│   ├── bullet.js                          // 子彈類
│   └── index.js                           // 玩家類
├── runtime
│   ├── background.js                      // 背景類
│   ├── gameinfo.js                        // 用于展示分數(shù)和結算界面
│   └── music.js                           // 全局音效管理器
├── databus.js                             // 管控游戲狀態(tài)
└── main.js                                // 游戲入口主函數(shù)

引入Three.js

現(xiàn)在我們還缺少Three.js,因為我在其它項目中使用過 three ,從node_modules找到three,把編譯后的文件放到libs目錄下即可。
微信3D小游戲系列一:在微信小游戲中使用threejs
微信3D小游戲系列一:在微信小游戲中使用threejs

在小程序中運行 threejs

目標效果

我們的目標是把博文threejs-場景創(chuàng)建中的效果搬到小屏幕上,在web端運行效果如下。

微信3D小游戲系列一:在微信小游戲中使用threejs

小程序代碼

代碼邏輯和在web端是完全一樣的,唯一的區(qū)別就是在小程序中無法使用框架(react),需要使用原生JS寫法,不過問題不大。

import * as THREE from './js/libs/three.js'
import './js/libs/weapp-adapter.js'

// 創(chuàng)建渲染器
const renderer = new THREE.WebGLRenderer({
    canvas: canvas
})
renderer.setClearColor(new THREE.Color(0x000000)); // 設置背景顏色和透明度
renderer.shadowMap.enabled = true; // 渲染器允許渲染陰影?
renderer.setSize(window.innerWidth, window.innerHeight)

// 創(chuàng)建場景
const scene = new THREE.Scene()

// 創(chuàng)建相機并設置屬性
const camera = new THREE.PerspectiveCamera()
camera.aspect = (window.innerWidth / window.innerHeight) // 攝像機設置屏幕寬高比
camera.fov = 45; // 攝像機的視角
camera.near = 0.01; // 近面距離
camera.far = 1001; // 遠面距離
camera.position.set(30, 40, 30) // 設置攝像機在threejs坐標系中的位置
camera.lookAt(0, 0, 0) // 攝像機的指向

// 添加一個坐標軸
const axes = new THREE.AxesHelper(20);
scene.add(axes);

// 添加一個地板
const planeGeometry = new THREE.PlaneGeometry(60, 20); // 創(chuàng)建平面幾何體
const planeMaterial = new THREE.MeshBasicMaterial({ // 一種非光澤表面的材質,沒有鏡面高光
    color: 0xAAAAAA
});
const plane = new THREE.Mesh(planeGeometry, planeMaterial); // 創(chuàng)建地板模型
plane.rotation.x = -0.5 * Math.PI; // 默認平行于xoy面,沿著X軸旋轉-90°至xoz面
plane.receiveShadow = true;
scene.add(plane); // 向場景中添加創(chuàng)建的地板

// 添加一個球體
const sphereGeometry = new THREE.SphereGeometry(4, 20, 20); // 球狀幾何體
const sphereMaterial = new THREE.MeshBasicMaterial({ color: 0x7777FF, side: THREE.DoubleSide });
const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
sphere.castShadow = true; // 允許接受陰影
sphere.position.set(20, 4, 2); // 球模型在坐標系中位置
scene.add(sphere); // 向場景中添加光源

// 添加一個立方體
const cubeGeometry = new THREE.BoxGeometry(5, 5, 5);
const cubeMaterial = new THREE.MeshBasicMaterial({ color: 'blue' })
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.castShadow = true;
cube.position.set(-20, 2.5, 0);
scene.add(cube)


let step = 0;
const cubrRoatetSpeed = 0.03;
const sphereRotateSpeed = 0.03

const animate = function () {

    step += sphereRotateSpeed
    sphere.position.x = 20 + (10 * Math.cos(step)); //水平方向為余弦曲線
    sphere.position.y = 4 + (10 * Math.abs(Math.sin(step))); // 豎直方向為正弦曲線

    // // 立方體添加旋轉效果
   cube.rotation.x += cubrRoatetSpeed;
   cube.rotation.y += cubrRoatetSpeed;
   cube.rotation.z += cubrRoatetSpeed;
}

const render = function () {
    animate()
    renderer.render(scene, camera)
    requestAnimationFrame(render)
}

render()

打開微信開發(fā)者工具,查看效果:

微信3D小游戲系列一:在微信小游戲中使用threejs
這里發(fā)現(xiàn)兩個問題:

  • 使用 MeshLambertMaterial 材質時顏色沒有生效,只能換成 MeshBasicMaterial
  • 原生threejs 的陰影沒有生效,可能需要書寫webgl來解決這個問題。

看來threejs在小程序上的適配還是有很大問題,不過也可以理解,畢竟小程序的運行環(huán)境與瀏覽器是完全不同的。但是目標已經(jīng)完成,工程代碼可下載。文章來源地址http://www.zghlxwxcb.cn/news/detail-441647.html

到了這里,關于微信3D小游戲系列一:在微信小游戲中使用threejs的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • WEB--3D立體魔方小游戲 (附源碼)

    WEB--3D立體魔方小游戲 (附源碼)

    魔方這個學生時代常玩的游戲之一 想必大家都不怎么陌生了吧 如果感到陌生的話 那難道這就表明了時代間的層層代溝 時代變化的太快了嘛 好了言歸正卷了 那么前端怎么實現(xiàn)魔方小游戲呢 從以下幾個方面細講 結果是最好的印證品 這毋庸置疑的了 1、先將平面上的6個DIV拼接

    2024年02月11日
    瀏覽(25)
  • 【Cocos 3d】從零開始自制3d出租車小游戲

    【Cocos 3d】從零開始自制3d出租車小游戲

    本文很長,建議收藏食用。 課程來源: 游戲開發(fā)教程 | 零基礎也可以用18堂課自制一款3D小游戲 | Cocos Creator 3D 中文教程(合集)p1~p6 簡介: 資源下載:https://github.com/cocos-creator/tutorial-taxi-game 適合學習人群:本教程假定你對編程有一定的了解,ts,js 學習過其中之一。 如果不

    2024年02月02日
    瀏覽(54)
  • 前端超好玩的小游戲合集來啦--周末兩天用html5做一個3D飛行兔子蘿卜小游戲
  • Unity小游戲-驚爆游戲(PC)3D聯(lián)網(wǎng)大逃殺游戲 項目展示+完整項目源碼

    Unity小游戲-驚爆游戲(PC)3D聯(lián)網(wǎng)大逃殺游戲 項目展示+完整項目源碼

    1.類似吃雞的小游戲,但是這里沒有毒圈,武器只有炸彈,沒有槍。 2.游戲開始后所有人的體力會不斷下降,當體力下降到0就會死亡。 3.玩家只有吃食物增加體力才能活下去,而食物只能通過空投獲取或者干掉其他玩家獲取。(這就意味著你必須去干人,不能躲在一邊茍活)

    2023年04月20日
    瀏覽(30)
  • 微信、抖音小游戲使用XMLHttpRequest請求超時(request:fail timeout)readyState始終為1的解決方案

    微信、抖音小游戲使用XMLHttpRequest請求超時(request:fail timeout)readyState始終為1的解決方案

    前陣子又有小游戲掛掉了,用戶登錄不上,而且是微信抖音都有該現(xiàn)象,調試了下發(fā)現(xiàn)是XMLHttpRequest往后端發(fā)送請求,沒有得到響應引起的,readyState正常是1234狀態(tài),但是BUG發(fā)生時readyState到1就卡住了。監(jiān)聽onerror事件得到了request:fail timeout的錯誤日志。猜測可能是數(shù)據(jù)量過大而

    2024年02月04日
    瀏覽(32)
  • 你的第一個微信小游戲,教你從0開始制作小游戲(一)

    你的第一個微信小游戲,教你從0開始制作小游戲(一)

    微信開放文檔 Cocos引擎_游戲開發(fā)引擎 發(fā)布流程就是先在cocos中編寫你的游戲,然后生成對應的軟件包,再到微信開發(fā)者工具上傳到微信小程序平臺。 Cocos是典型的組件節(jié)點式的開發(fā),3.x版本之前的語言是js,ts都可以。3.x版本之后就只能用ts。 Introduction · Cocos Creator使用手冊

    2024年02月12日
    瀏覽(100)
  • Unity項目轉微信小游戲 微信小程序保姆教程,繁雜問題解決,及微信小游戲平臺簡單性能測試

    Unity項目轉微信小游戲 微信小程序保姆教程,繁雜問題解決,及微信小游戲平臺簡單性能測試

    借著某人需求,做了一波簡單的技術調研:將Unity項目轉換為微信小游戲。 本文主要內容:Unity轉換小游戲的步驟,遇到問題的解決方法,以及簡單的性能測試對比 微信小游戲的限制 微信小游戲對程序包體大小有嚴格限制:首包必須小于2M,首包加分包(后加載)不得大于

    2024年02月05日
    瀏覽(108)
  • CocosCreator 微信小游戲

    CocosCreator 微信小游戲

    問題描述: 用 cocoscreator 寫的小游戲,想發(fā)布為微信小游戲,如何構建發(fā)布? 鏈接: https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html 依據(jù)自己的電腦配置,下載相應的文件哦。 打開 -微信開發(fā)者工具- ,用微信登陸,點擊小游戲 ,點擊 加號添加游戲 在 注冊 -微信開發(fā)者

    2024年02月07日
    瀏覽(21)
  • Unity - 微信小游戲

    Unity - 微信小游戲

    總參考:Unity WebGL 微信小游戲適配方案(公測) ? 下載?Unity插件,并導入至游戲項目中,版本更新請查看更新日志 請查閱推薦引擎版本,安裝時選擇 WebGL 組件 最終選擇 Unity2021.2.5f1c1 InstantGame 前往Node官網(wǎng)安裝長期穩(wěn)定版 之前已安裝 v16.17.0 前往微信開發(fā)者工具下載安裝 Stable

    2024年02月06日
    瀏覽(55)
  • 現(xiàn)有Unity轉微信小游戲

    現(xiàn)有Unity轉微信小游戲

    關于微信小游戲開發(fā)的內容在《Unity WebGL 微信小游戲適配方案》中有詳細,這里會忽略大部分更深入的細節(jié),大家可以自行在下面的地址中找到答案。 此篇文章的目的是帶著大家快速的把自己已有的游戲轉成微信小游戲。 《Unity WebGL 微信小游戲適配方案》地址: https://gith

    2023年04月08日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包