用户:
DebugDynamo查看:0 回复:6 评论:0 创建时间:2021-09-30T13:16:01
话不多说上代码
这次讲的特效可以全方位发射
参数都是一样哒
async function texiao2(entity, mesh, meshs, gravity, v, quat, hu, raycast, shi) {
if (entity.leng == false) {
return
}
const d = entity.player.facingDirection //玩家的朝向
const knife = world.createEntity({
mesh: mesh,
meshScale: meshs,
collides: true, // 开启碰撞
gravity: gravity, // 不受重力影响
position: entity.position, // 在玩家的位置生成飞刀
velocity: d.scale(v), // 飞刀的初速度是玩家朝向向量的2倍
meshOrientation: quat.rotateX(Math.atan2(raycast.direction.y, Math.sqrt(raycast.direction.x ** 2 + raycast.direction.z ** 2))).rotateY(Math.atan2(raycast.direction.z, raycast.direction.x))//这里是神奇的旋转) // 刀头指向玩家的朝向
})
knife.id = entity.player.userKey //将小刀的id设置成玩家userKey, 便于碰撞过滤器识别
knife.velocity.x = raycast.direction.x * v
knife.velocity.y = raycast.direction.y * v
knife.velocity.z = raycast.direction.z * v
knife.onEntityContact(({ other }) => {//每当飞刀碰到另一个实体
other.hurt(hu, {
attacker: entity
})//被碰实体受10点伤害
knife.destroy()//清除飞刀, 防止飞刀数量太多超过服务器负载
})
knife.onVoxelContact(({ voxel }) => {//每当飞刀碰到另一个实体
knife.destroy()//清除飞刀, 防止飞刀数量太多超过服务器负载
})
entity.leng = false
await sleep(shi)
entity.leng = true
}
看看如何使用
举个栗子
texiao2(entity, 'mesh/子弹.vb', MeshScale, false, 4, Quat1, 10, raycast, 1)
好啦结束了
……………………………………