如果你已经判断到进入攀爬状态了,可以考虑如下操作:
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);
}
|