猫史档案馆


【求救】怎么把一个图的代码移到另一个图去?(平板)

用户:爱哭的鱼呵呵笑爱哭的鱼呵呵笑查看:5 回复:5 评论:5 创建时间:2022-12-11T11:05:27


啊啊啊创作节找不到代码师,自己复制代码不知道怎么复制……


回复

上一页1 页 / 共 1下一页
爱哭的鱼呵呵笑爱哭的鱼呵呵笑

999

点赞0


评论


仙恶仙恶

我会

点赞0


评论


仙恶仙恶

我帮你

点赞0


评论


名探酱名探酱

平板没法复制代码

点赞0


评论


名探酱名探酱

const checkPoints = []; // 检查点列表
const playerState = {} ; // 用于记录每个玩家的游戏状态
let bestResult = Infinity; // 最佳成绩, 用时越短越好, 所以初始化为无穷大

// 初始化检查点
world.querySelectorAll('.检查点').forEach((entity) => {
    const bounds = getEntityBounds(entity); // 获取检查点的bounds(大小)
    const index = parseInt(entity.id.match(/\d+/)[0]); // 计算检查点的序号
    checkPoints.push({ index, bounds }); // 添加到checkPoints
    entity.destroy(); // 摧毁检查点, 因为我们只需要index和bounds
});
// 根据index从大到小, 给checkPoints排序
checkPoints.sort((a, b) => a.index > b.index ? 1 : -1);

// 每个tick都检查所有玩家是否有经过存档点, 依次经过各个存档点才算跑完一圈
world.onTick(() => {
    const now = new Date().valueOf(); // 获取当前时间的毫秒数
    const players = world.querySelectorAll('player'); // 获取所有玩家
    for (const entity of players) {
        const { name } = entity.player; // 玩家昵称
        const bounds = getEntityBounds(entity); // 玩家范围
        const state = playerState[name]; // 玩家状态
        const next喵 = state.nextCheckPoint; // 下个存档点
        // 如果碰到了起点
        if (checkPoints[0].bounds.intersects(bounds)) {
            // 用户的下个存档点大于最大存档点, 表示跑完一圈了
            if (next喵 === checkPoints.length) {
                const time = (now - state.startTime) / 1000; // 所用时间转换为秒数
                // 判断是否打破记录
                if (time < bestResult) {
                    bestResult = time;
                    world.say(`恭喜@${name}以${time}秒的成绩打破记录!`);
                } else {
                    world.say(`@${name}跑完一圈, 圈速${time}秒.`);
                }    
            } else if (next喵 === 0) {
                // 第一次起跑
                world.say(`恭喜@${name}出发啦!`);
            }
            // 刷新存档点和时间
            state.nextCheckPoint = 1;
            state.startTime = now; 
        } else if (next喵 >= 0 && next喵 < checkPoints.length && checkPoints[next喵].bounds.intersects(bounds)) {
            // 碰到了下个存档点, 存档点+1
            state.nextCheckPoint++;
        }
    }
});


const spawnPoint = world.querySelector('#出生点'); // 获取出生点
const cars = world.querySelectorAll('.车'); // 获取所有车辆
// 销毁存档点和车的实体, 我们只需要mesh数据
spawnPoint.destroy();
cars.forEach((car) => car.destroy());

// 初始化玩家
world.onPlayerJoin(({entity}) => {
    entity.position.copy(spawnPoint.position); // 传送到出生点
    // 添加随机偏移, 避免人多的时候互相碰撞
    const offset = new Box3Vector3(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
    entity.position.addEq(offset.scale(3));
    // 设置初始状态
    playerState[entity.player.name] = {
        nextCheckPoint: 0,
        startTime: 0,
    };
    const car = randomPick(cars); // 随机选一辆车
    // 设置mesh
    entity.mesh = car.mesh;
    entity.meshScale = car.meshScale;
    // 调整mesh方向, 旋转180度
    entity.meshOrientation = entity.meshOrientation.rotateY(Math.PI);
    entity.player.invisible = true; // 隐藏玩家模型
    // 设置速度
    entity.player.walkSpeed = 0.8;
    entity.player.walkAcceleration = 0.05;
    entity.player.runSpeed = 2.2;
    entity.player.runAcceleration = 0.08;
});

// 计算实体的绝对坐标bounds
function getEntityBounds(entity) {
    const lo = entity.position.sub(entity.bounds);
    const hi = entity.position.add(entity.bounds);
    const bounds = new Box3Bounds3(lo, hi);
    return bounds;
}
// 随机选择一个数组中的元素
function randomPick(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
}

点赞0


评论