最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

范圍傷害

2023-08-11 16:08 作者:fun-無痕  | 我要投稿

console.clear()


const mscale = 1 / 16

const n = [-4, -3, -2, -1, 0, 1, 2, 3, 4]


// 生成一堆小人

for (let x of n) {

? ? for (let y of n) {

? ? ? ? for (let z of n) {

? ? ? ? ? ? const e = world.createEntity({

? ? ? ? ? ? ? ? mesh: 'mesh/小人.vb',? ? ? ? //地圖中需有一個(gè)名稱為“小人”的模型

? ? ? ? ? ? ? ? fixed: true,

? ? ? ? ? ? ? ? collides: false,

? ? ? ? ? ? ? ? position: [x * 4 + 64, y * 3 + 16, z * 4 + 64],

? ? ? ? ? ? ? ? meshScale: [mscale, mscale, mscale],

? ? ? ? ? ? })

? ? ? ? ? ? e.enableDamage = true

? ? ? ? ? ? e.onDie(() => {

? ? ? ? ? ? ? ? e.destroy()

? ? ? ? ? ? })

? ? ? ? }

? ? }

}


world.onPlayerJoin(({ entity }) => {

? ? entity.enableDamage = true?

})



function killZone(pos, radius, fn) { //球狀A(yù)OE

? ? for (const e of world.querySelectorAll('*')) {//遍歷所有實(shí)體

? ? ? ? const dist = e.position.distance(pos)//計(jì)算作用點(diǎn)與當(dāng)前實(shí)體的距離

? ? ? ? if (dist <= radius) {//當(dāng)距離小于等于有效作用半徑

? ? ? ? ? ? fn(e, dist)//傳遞當(dāng)前實(shí)體和距離到回調(diào)函數(shù)并執(zhí)行

? ? ? ? }

? ? }

}


async function killBox(pos, size, fn) { //盒狀A(yù)OE

? ? //搜索包圍盒內(nèi)的所有實(shí)體

? ? const entities = world.searchBox({

? ? ? ? lo: [pos.x - size, pos.y - size, pos.z - size], //包圍盒下邊界

? ? ? ? hi: [pos.x + size, pos.y + size, pos.z + size], //包圍盒上邊界

? ? })


? ? for (const e of entities) { //遍歷所有找到的實(shí)體

? ? ? ? fn(e)

? ? }

}


async function makeDamage(e, dmg, color) {

? ? e.hurt(Math.max(1, dmg)) //max用于防止負(fù)數(shù)傷害


? ? e.meshColor.copy(color) //當(dāng)前實(shí)體變色

? ? await sleep(500)

? ? e.meshColor.set(1, 1, 1, 1) //恢復(fù)正常顏色

}


const RED = new Box3RGBAColor(1, 0, 0, 1)

const GREEN = new Box3RGBAColor(0, 1, 0, 1)

const BLUE = new Box3RGBAColor(0, 0, 1, 1)

world.onPress(({ entity, button, raycast }) => {

? ? if (button === Box3ButtonType.CROUCH) { //下蹲鍵觸發(fā)自身球狀A(yù)OE

? ? ? ? const range = 8//AOE有效作用半徑

? ? ? ? killZone(entity.position, range, async (e, dist) => {

? ? ? ? ? ? if (e === entity) return//如果當(dāng)前實(shí)體是AOE施放者, 就不繼續(xù)執(zhí)行, 避免傷到自己

? ? ? ? ? ? const ratio = (range - dist) / range //計(jì)算距離百分比, 離得越近ratio越趨向1, 離得越遠(yuǎn)ratio越趨向0

? ? ? ? ? ? makeDamage(e, 100 * ratio, RED)

? ? ? ? })

? ? }

? ? else if (button === Box3ButtonType.ACTION0) { //左鍵觸發(fā)遠(yuǎn)距離球狀A(yù)OE

? ? ? ? const range = 8//AOE有效作用半徑

? ? ? ? killZone(raycast.hitPosition, range, async (e, dist) => {

? ? ? ? ? ? if (e === entity) return//如果當(dāng)前實(shí)體是AOE施放者, 就不繼續(xù)執(zhí)行, 避免傷到自己

? ? ? ? ? ? const ratio = (range - dist) / range //計(jì)算距離百分比, 離得越近ratio越趨向1, 離得越遠(yuǎn)ratio越趨向0

? ? ? ? ? ? makeDamage(e, 100 * ratio, GREEN)

? ? ? ? })

? ? }

? ? else if (button === Box3ButtonType.ACTION1) { //右鍵觸發(fā)遠(yuǎn)距離盒狀A(yù)OE

? ? ? ? const size = 7 //AOE盒的大小

? ? ? ? killBox(raycast.hitPosition, size, (e) => {

? ? ? ? ? ? if (e === entity) return//如果當(dāng)前實(shí)體是AOE施放者, 就不繼續(xù)執(zhí)行, 避免傷到自己

? ? ? ? ? ? makeDamage(e, 20, BLUE)

? ? ? ? })

? ? }

})


范圍傷害的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
鄂尔多斯市| 柞水县| 内乡县| 金塔县| 陆良县| 明星| 静宁县| 宣城市| 西平县| 阿克陶县| 嘉义市| 青海省| 丹东市| 靖边县| 济源市| 洮南市| 山阴县| 镇平县| 定南县| 靖远县| 新源县| 凯里市| 滁州市| 曲麻莱县| 渝中区| 麻江县| 新巴尔虎右旗| 鸡东县| 海林市| 万年县| 光山县| 厦门市| 西乌珠穆沁旗| 平阴县| 泗水县| 胶南市| 安阳市| 博野县| 马尔康县| 石狮市| 绥德县|