Commit 0a527e6e authored by Master Q's avatar Master Q

1

parent c2e93616
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -821,6 +821,9 @@ export class CarScene extends PerspectiveScene { ...@@ -821,6 +821,9 @@ export class CarScene extends PerspectiveScene {
preSpeedNum: number = 0 // 前一帧速度 preSpeedNum: number = 0 // 前一帧速度
preVehiclePositionY: number = 0 // 前一帧高度 preVehiclePositionY: number = 0 // 前一帧高度
_currDistance: number = 0 _currDistance: number = 0
_preVehiclePos: THREE.Vector3 = new THREE.Vector3()
_rotateNum: number = 0
_prerotateflag: number = 0
get currDistance() { get currDistance() {
return this._currDistance return this._currDistance
...@@ -833,6 +836,14 @@ export class CarScene extends PerspectiveScene { ...@@ -833,6 +836,14 @@ export class CarScene extends PerspectiveScene {
}) })
} }
get rotateNum() {
return this._rotateNum
}
set rotateNum(v) {
this._rotateNum = v
}
onEnterFrame(e: any) { onEnterFrame(e: any) {
const delta = e.data.delta const delta = e.data.delta
if (this.physicWorld) { if (this.physicWorld) {
...@@ -846,7 +857,8 @@ export class CarScene extends PerspectiveScene { ...@@ -846,7 +857,8 @@ export class CarScene extends PerspectiveScene {
this.updateCamera(this.camera) this.updateCamera(this.camera)
if (this.vehicleIns && this.UICtn) { if (this.vehicleIns && this.UICtn) {
const h = this.vehicleIns.chassisMesh.position.y const vehiclePos = this.vehicleIns.chassisMesh.position
const h = vehiclePos.y
const currSpeedNum = this.vehicleIns.speedNum const currSpeedNum = this.vehicleIns.speedNum
const minH = GameConfig.h const minH = GameConfig.h
...@@ -854,24 +866,38 @@ export class CarScene extends PerspectiveScene { ...@@ -854,24 +866,38 @@ export class CarScene extends PerspectiveScene {
// 高于 一定高度 // 高于 一定高度
if (h > minH) { if (h > minH) {
// this.currDistance += currSpeedNum * delta const _t = new THREE.Vector3(vehiclePos.x, 0, vehiclePos.z)
const currflag = _defaultVector3.crossVectors(this._preVehiclePos, _t).y
let rn = 0
if (this.preVehiclePositionY < minH) { if (this.preVehiclePositionY < minH) {
console.log('开始积分')
// 刚开始进入 // 刚开始进入
this.currDistance = 0 this.currDistance = 0
this.currDistance += currSpeedNum * delta this.rotateNum = 0
} else { } else {
const isReversal = currSpeedNum * this.preSpeedNum < 0 const isReversalSpeed = currSpeedNum * this.preSpeedNum < 0
if (isReversal) { // 跑的方向 相反
const isReversal = this._prerotateflag * currflag < 0
rn = this._preVehiclePos.angleTo(_t)
if (isReversalSpeed || isReversal) {
this.onGameSubmit(this.currDistance) this.onGameSubmit(this.currDistance)
console.log('开始积分')
this.currDistance = 0 this.currDistance = 0
this.rotateNum = 0
} }
this.currDistance += currSpeedNum * delta
} }
this.currDistance += currSpeedNum * delta
this.rotateNum += rn
this._preVehiclePos.copy(_t)
this._prerotateflag = currflag
} else { } else {
if (this.currDistance != 0) { if (this.currDistance != 0) {
// 提交 // 提交
this.onGameSubmit(this.currDistance) this.onGameSubmit(this.currDistance)
this.currDistance = 0 this.currDistance = 0
this.rotateNum = 0
} }
} }
...@@ -882,7 +908,7 @@ export class CarScene extends PerspectiveScene { ...@@ -882,7 +908,7 @@ export class CarScene extends PerspectiveScene {
} }
onGameSubmit(n: number) { onGameSubmit(n: number) {
console.log('当前分数:', Math.abs(n)) console.log('当前分数:', Math.abs(n), '圈数:', (this.rotateNum / Math.PI / 2).toFixed(2))
GDispather.dispatchEvent('distanceUpdate', { GDispather.dispatchEvent('distanceUpdate', {
distance: Math.abs(n) distance: Math.abs(n)
}) })
......
...@@ -13,5 +13,6 @@ export const ResJson = { ...@@ -13,5 +13,6 @@ export const ResJson = {
"name": "skybox" "name": "skybox"
} }
], ],
"path": "./resource/" // eslint-disable-next-line
"path": "https://yun.duiba.com.cn/db_games/activity/template/1663753225/resource/"
} }
\ No newline at end of file
...@@ -27,15 +27,19 @@ export class StageScene { ...@@ -27,15 +27,19 @@ export class StageScene {
async initStage() { async initStage() {
RES.loadConfig(ResJson) RES.loadConfig(ResJson)
if (typeof Ammo === 'function') {
// @ts-ignore // @ts-ignore
Ammo().then(() => { Ammo().then(() => {
this.stage = new CarScene(this.renderDom, this.UIParentNode)
})
} else {
this.stage = new CarScene(this.renderDom, this.UIParentNode) this.stage = new CarScene(this.renderDom, this.UIParentNode)
}) }
} }
destroy() { destroy() {
this.stage.destroy() this.stage && this.stage.destroy()
} }
} }
\ No newline at end of file
...@@ -4,7 +4,7 @@ const webpack = require('webpack'); ...@@ -4,7 +4,7 @@ const webpack = require('webpack');
const path = require('path') const path = require('path')
module.exports = merge(common, { module.exports = merge(common, {
mode: "development",//production development mode: "production",//production development
devtool: 'source-map', devtool: 'source-map',
plugins: [ plugins: [
] ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment