爬梯子功能怎么写

[复制链接]
746 |1
kk 发表于 2023-5-31 11:11:46 | 显示全部楼层 |阅读模式
111
回复

使用道具 举报

喵喵哭唧唧 发表于 2023-5-31 15:23:51 | 显示全部楼层
如果你已经判断到进入攀爬状态了,可以考虑如下操作:
1.让角色进入飞行状态
2.改变玩家位置朝向
3.修改玩家面朝方向和移动方向
4.切换姿态

5.修改摄像机跟随的参数


    /**
     * 激活攀爬
     */
    private activeClimb() {
        if (this.sState == SpiderState.Climbing) return;
        oTraceError(`激活攀爬`);
        this.setState(SpiderState.Climbing);

        this.character.switchToFlying();// 设置飞行状态
        this.character.brakingDecelerationFlying = 8000;// 调整飞行制动速率
        this.character.maxFlySpeed = 200;// 最大飞行速度
        this.character.worldLocation = this.character.transform.transformLocation(new Type.Vector(-35, 0, 100));// 50防止掉下去 v.x让他往外偏点别卡墙里
        this.character.worldRotation = this.target.impactNormal.toRotation().add(this.impactRotation);//调整朝向,贴合攀爬的面

        this.character.moveFacingDirection = Gameplay.MoveFacingDirection.FixedDirection;// 设置运动面朝方向
        this.character.movementDirection = Gameplay.MovementDirection.AxisDirection;// 设置运动依据方向,在墙壁上了,只沿着固定轴移动
        this.stopAllAnimation();// 停止当前播放的其它动作
        this.climbStance.stop();// 重置攀爬姿态
        this.climbStance.play();// 新的攀爬姿态

        setTimeout(() => {
            this.camera.cameraRotationLagEnable = true;
            this.camera.cameraRotationLagSpeed = 2;
            this.camera.setOverrideCameraRotation(this.character.forwardVector.toRotation());
            this.stopAllAnimation(); // 可能出现按的太快动作没有变过来,再手动停一次
        }, 100);
    }



回复

使用道具 举报

72小时热榜
热门版块
快速回复 返回顶部 返回列表