chore:代码重构
This commit is contained in:
@@ -1,221 +1,262 @@
|
||||
import { _decorator, Component, Node, input, Input, EventTouch, Vec3, Quat, v3, Button, tween, v2, Camera, director, geometry, screen, PhysicsSystem, Prefab, instantiate, ParticleSystem } from 'cc';
|
||||
import { RagdollBone } from '../Ragdoll/RagdollBone';
|
||||
import { SingletonBase } from './framework/SingletonBase';
|
||||
import { GameController } from './GameController';
|
||||
// @structural-rewrite-v1
|
||||
import { _decorator, Camera, EventTouch, geometry, instantiate, Node, ParticleSystem, PhysicsSystem, Prefab, screen, tween, Vec3 } from 'cc';
|
||||
import { Ragdoll } from '../Ragdoll/Ragdoll';
|
||||
import { RagdollBone } from '../Ragdoll/RagdollBone';
|
||||
import { GameController } from './GameController';
|
||||
import { SingletonBase } from './framework/SingletonBase';
|
||||
import { CameraAimState } from './framework/runtime/CameraAimState';
|
||||
import { UIManager } from './framework/ui/UIManager';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('FPSCameraController')
|
||||
export class FPSCameraController extends SingletonBase<FPSCameraController> {
|
||||
// export class FPSCameraController extends Component {
|
||||
|
||||
@property(Node)
|
||||
cameraNode: Node = null; // 相机节点
|
||||
cameraNode: Node = null;
|
||||
@property(Camera)
|
||||
camera: Camera = null; // 相机节点
|
||||
|
||||
camera: Camera = null;
|
||||
@property(Camera)
|
||||
qingBao: Camera = null; // 相机节点
|
||||
|
||||
|
||||
qingBao: Camera = null;
|
||||
@property(ParticleSystem)
|
||||
particle: ParticleSystem = null; // 粒子系统
|
||||
|
||||
|
||||
particle: ParticleSystem = null;
|
||||
@property(Prefab)
|
||||
lastBulletPrefab: Prefab = null;
|
||||
lastBullet: Node = null;
|
||||
|
||||
private _touchStartPos: Vec3 = new Vec3();
|
||||
private _rotationSpeed: number = 0.04; // 旋转速度
|
||||
private _currentRotationX: number = 0; // 当前相机的垂直旋转角度
|
||||
private _currentRotationY: number = 0; // 当前相机的水平旋转角度
|
||||
private _defaultRotationY: number = 0; // 当前相机的水平旋转角度
|
||||
private _maxVerticalAngle: number = 70; // 最大垂直旋转角度
|
||||
private _maxHorizontalAngle: number = 45; // 最大垂直旋转角度
|
||||
private _defaultFOV: number = 45; // 默认 FOV
|
||||
private _aimFOV: number = 25; // 瞄准时的 FOV
|
||||
private _isAiming: boolean = false; // 是否正在瞄准
|
||||
|
||||
onLoad() {
|
||||
super.onLoad()
|
||||
}
|
||||
|
||||
init(curCamera: Camera, aimFov: number) {
|
||||
this.camera = curCamera
|
||||
this.cameraNode = curCamera.node
|
||||
|
||||
const initialRotation = this.cameraNode.getWorldRotation();
|
||||
const eulerAngles = initialRotation.getEulerAngles(v3());
|
||||
this._currentRotationX = eulerAngles.x;
|
||||
this._currentRotationY = eulerAngles.y;
|
||||
this._defaultRotationY = eulerAngles.y;
|
||||
this._aimFOV = aimFov;
|
||||
|
||||
// 获取摄像机的默认 FOV
|
||||
const camera = this.cameraNode.getComponent(Camera);
|
||||
camera.fov = this._defaultFOV
|
||||
|
||||
}
|
||||
|
||||
onTouchStart(event: EventTouch) {
|
||||
// console.log("onTouchStart", event)
|
||||
const touch = event.touch;
|
||||
this._touchStartPos.set(touch.getLocation().x, touch.getLocation().y, 0);
|
||||
|
||||
}
|
||||
|
||||
onTouchMove(event: EventTouch) {
|
||||
// console.log("onTouchMove", event)
|
||||
const touch = event.touch;
|
||||
const deltaX = touch.getLocation().x - this._touchStartPos.x;
|
||||
const deltaY = touch.getLocation().y - this._touchStartPos.y;
|
||||
|
||||
// 横向旋转(左右滑动):作用于摄像机的 Y 轴
|
||||
const rotationY = -deltaX * this._rotationSpeed * this.camera.fov / 45;
|
||||
|
||||
// console.log("this.camera.fov", this.camera.fov)
|
||||
this._currentRotationY += rotationY;
|
||||
|
||||
// 纵向旋转(上下滑动):作用于摄像机的 X 轴
|
||||
const rotationX = deltaY * this._rotationSpeed * this.camera.fov / 45;// 修正:去掉负号
|
||||
this._currentRotationX += rotationX;
|
||||
|
||||
// 限制垂直旋转角度
|
||||
this._currentRotationX = Math.min(Math.max(this._currentRotationX, -this._maxVerticalAngle), 60);
|
||||
this._currentRotationY = Math.min(Math.max(this._currentRotationY, this._defaultRotationY - this._maxHorizontalAngle), this._defaultRotationY + this._maxHorizontalAngle);
|
||||
|
||||
|
||||
|
||||
// 应用旋转到相机节点
|
||||
const newRotation = Quat.fromEuler(new Quat(), this._currentRotationX, this._currentRotationY, 0);
|
||||
this.cameraNode.setWorldRotation(newRotation);
|
||||
|
||||
// console.log("newRotation", this._currentRotationX, this._currentRotationY)
|
||||
|
||||
// 更新起始位置
|
||||
this._touchStartPos.set(touch.getLocation().x, touch.getLocation().y, 0);
|
||||
}
|
||||
|
||||
setTutorialRotate() {
|
||||
this._currentRotationX = -3.99
|
||||
this._currentRotationY = -32.27
|
||||
const newRotation = Quat.fromEuler(new Quat(), this._currentRotationX, this._currentRotationY, 0);
|
||||
this.cameraNode.setWorldRotation(newRotation);
|
||||
}
|
||||
|
||||
shoot() {
|
||||
|
||||
let ray = new geometry.Ray();
|
||||
this.camera.screenPointToRay(screen.windowSize.width / 2, screen.windowSize.height / 2, ray);
|
||||
// 以下参数可选
|
||||
const mask = 0xffffffff;
|
||||
const maxDistance = 10000000;
|
||||
const queryTrigger = true;
|
||||
let result = false
|
||||
if (PhysicsSystem.instance.raycastClosest(ray, mask, maxDistance, queryTrigger)) {
|
||||
const raycastClosestResult = PhysicsSystem.instance.raycastClosestResult;
|
||||
const hitPoint = raycastClosestResult.hitPoint
|
||||
const hitNormal = raycastClosestResult.hitNormal;
|
||||
const collider = raycastClosestResult.collider;
|
||||
const distance = raycastClosestResult.distance;
|
||||
console.log("碰撞检测", raycastClosestResult.collider.node.name)
|
||||
let bone = raycastClosestResult.collider.node.getComponent(RagdollBone)
|
||||
if (bone != null) {
|
||||
if (!bone.ragdoll.isDie) {
|
||||
if (GameController.getInstance().curLevel.judgeLastBullet()) {
|
||||
this.fireLastBullet(bone.ragdoll, hitPoint)
|
||||
} else {
|
||||
this.scheduleOnce(() => {
|
||||
bone.ragdoll.node.active = false
|
||||
}, 2);
|
||||
bone.ragdoll.setEnabled(true);
|
||||
result = true
|
||||
this.particle.node.setWorldPosition(hitPoint.clone())
|
||||
this.particle.play()
|
||||
}
|
||||
private readonly aimState = new CameraAimState();
|
||||
private readonly defaultFOV = 45;
|
||||
private aimFOV = 25;
|
||||
private isAiming = false;
|
||||
protected onLoad(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (super["onLoad"]());
|
||||
}
|
||||
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
|
||||
tween(this.camera.node)
|
||||
.by(0.05, { position: new Vec3(0, 2, 0) }, { easing: 'sineOutIn' })
|
||||
.by(0.05, { position: new Vec3(0, -2, 0) }, { easing: 'sineOutIn' })
|
||||
.start()
|
||||
|
||||
return result
|
||||
|
||||
}
|
||||
|
||||
closeQingBao() {
|
||||
this.qingBao.node.active = false
|
||||
}
|
||||
|
||||
showQingBao() {
|
||||
this.qingBao.node.active = true
|
||||
var enemy = GameController.getInstance().curLevel.getQingBaoEnemey().centerNode;
|
||||
let pos = enemy.getWorldPosition().add(enemy.getWorldPosition().subtract(this.cameraNode.getWorldPosition()).normalize().multiplyScalar(-5))
|
||||
let enemyPos = enemy.getWorldPosition()
|
||||
let cameraPos = this.cameraNode.getWorldPosition()
|
||||
let dirNor = enemy.getWorldPosition().subtract(this.cameraNode.getWorldPosition()).normalize()
|
||||
|
||||
let newPos = enemy.getWorldPosition().add(dirNor.multiplyScalar(-15))
|
||||
|
||||
let dir = this.cameraNode.getWorldPosition().subtract(enemy.getWorldPosition())
|
||||
|
||||
console.log("enemy", enemy.getWorldPosition())
|
||||
console.log("camera", this.cameraNode.getWorldPosition())
|
||||
console.log("newPos", newPos)
|
||||
console.log("dirNor", enemy.getWorldPosition().subtract(this.cameraNode.getWorldPosition()).normalize())
|
||||
this.qingBao.node.setWorldPosition(newPos)
|
||||
this.qingBao.node.forward = enemy.getWorldPosition().subtract(this.cameraNode.getWorldPosition()).normalize()
|
||||
}
|
||||
|
||||
fireLastBullet(ragdoll: Ragdoll, hitPoint: Vec3) {
|
||||
var last = instantiate(this.lastBulletPrefab)
|
||||
last.setParent(this.node)
|
||||
last.setWorldPosition(this.cameraNode.worldPosition)
|
||||
last.forward = this.cameraNode.worldPosition.subtract(hitPoint).normalize()
|
||||
this.lastBullet = last
|
||||
this.camera.enabled = false
|
||||
|
||||
UIManager.instance.closeAllPanels()
|
||||
|
||||
tween(last)
|
||||
.to(1.67, { worldPosition: hitPoint }, { easing: 'cubicIn' })
|
||||
.call(() => {
|
||||
ragdoll.setEnabled(true);
|
||||
last.getChildByName("bullet").active = false
|
||||
GameController.getInstance().curLevel.win()
|
||||
})
|
||||
.start()
|
||||
}
|
||||
|
||||
clear() {
|
||||
if (this.lastBullet != null) {
|
||||
this.lastBullet.destroy()
|
||||
this.lastBullet = null
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
onAimButtonClick(isAnim: boolean) {
|
||||
const camera = this.cameraNode.getComponent(Camera);
|
||||
if (!camera) return;
|
||||
|
||||
this._isAiming = isAnim; // 切换瞄准状态
|
||||
|
||||
if (this._isAiming) {
|
||||
// 瞄准状态:缩小 FOV
|
||||
tween(camera)
|
||||
.to(0.1, { fov: this._aimFOV }) // 平滑过渡到瞄准 FOV
|
||||
.start();
|
||||
} else {
|
||||
// 非瞄准状态:恢复默认 FOV
|
||||
tween(camera)
|
||||
.to(0.1, { fov: this._defaultFOV }) // 平滑过渡到默认 FOV
|
||||
.start();
|
||||
init(curCamera: Camera, aimFov: number): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["camera"] = curCamera);
|
||||
void (this["cameraNode"] = curCamera["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
void ((this["aimState"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["initialize"](this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
|
||||
void (this["aimFOV"] = aimFov);
|
||||
void ((this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getComponent"](Camera)["fov"] = this["defaultFOV"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
}
|
||||
onTouchStart(event: EventTouch): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void ((this["aimState"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["begin"]((event["touch"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getLocation"]()));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
onTouchMove(event: EventTouch): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const fovScale = ((this["camera"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["fov"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) / (this["defaultFOV"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
void ((this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["setWorldRotation"]((this["aimState"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["move"]((event["touch"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getLocation"](), fovScale)));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
setTutorialRotate(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void ((this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["setWorldRotation"]((this["aimState"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["tutorialRotation"]()));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
shoot(): boolean {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const didHitEnemy = this["handleRaycastHit"]();
|
||||
void (this["playRecoil"]());
|
||||
return didHitEnemy;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
closeQingBao(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (((this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
showQingBao(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (((this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = true);
|
||||
const enemy = (GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getQingBaoEnemey"]()["centerNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
||||
const enemyPosition = enemy["getWorldPosition"]();
|
||||
const direction = enemyPosition["clone"]()["subtract"]((this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getWorldPosition"]())["normalize"]();
|
||||
const cameraPosition = enemyPosition["clone"]()["add"](direction["clone"]()["multiplyScalar"](-15));
|
||||
void (((this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["setWorldPosition"](cameraPosition));
|
||||
void (((this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["forward"] = direction);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
fireLastBullet(ragdoll: Ragdoll, hitPoint: Vec3): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const lastBullet = instantiate(this["lastBulletPrefab"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
void (lastBullet["parent"] = this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
void (lastBullet["setWorldPosition"]((this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["worldPosition"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
|
||||
void (lastBullet["forward"] = ((this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["worldPosition"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["subtract"](hitPoint)["normalize"]());
|
||||
void (this["lastBullet"] = lastBullet);
|
||||
void ((this["camera"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["enabled"] = false);
|
||||
void ((UIManager["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["closeAllPanels"]());
|
||||
void (tween(lastBullet)["to"](1.67, { "worldPosition": hitPoint }, { "easing": 'cubicIn' })["call"](() => {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (ragdoll["setEnabled"](true));
|
||||
void (lastBullet["getChildByName"]('bullet')["active"] = false);
|
||||
void ((GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["win"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
})["start"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
clear(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
if (!(this["lastBullet"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))
|
||||
return;
|
||||
void ((this["lastBullet"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["destroy"]());
|
||||
void (this["lastBullet"] = null);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
onAimButtonClick(isAnim: boolean): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const camera = (this["cameraNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getComponent"](Camera);
|
||||
if (!camera)
|
||||
return;
|
||||
void (this["isAiming"] = isAnim);
|
||||
void (tween(camera)["to"](0.1, { "fov": this["isAiming"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown ? this["aimFOV"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown : this["defaultFOV"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown })["start"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private handleRaycastHit(): boolean {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const ray = new (geometry["Ray"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)();
|
||||
void ((this["camera"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["screenPointToRay"](((screen["windowSize"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["width"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) / 2, ((screen["windowSize"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["height"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) / 2, ray));
|
||||
if (!(PhysicsSystem["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["raycastClosest"](ray, 0xffffffff, 10000000, true))
|
||||
return false;
|
||||
const hit = (PhysicsSystem["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["raycastClosestResult"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
||||
const bone = ((hit["collider"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getComponent"](RagdollBone);
|
||||
if (!bone || (bone["ragdoll"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["isDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)
|
||||
return false;
|
||||
if ((GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["judgeLastBullet"]()) {
|
||||
void (this["fireLastBullet"](bone["ragdoll"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, hit["hitPoint"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
|
||||
return false;
|
||||
}
|
||||
void (this["scheduleOnce"](() => ((bone["ragdoll"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false, 2));
|
||||
void ((bone["ragdoll"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["setEnabled"](true));
|
||||
void (((this["particle"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["setWorldPosition"]((hit["hitPoint"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["clone"]()));
|
||||
void ((this["particle"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["play"]());
|
||||
return true;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private playRecoil(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (tween((this["camera"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["by"](0.05, { "position": new Vec3(0, 2, 0) }, { "easing": 'sineOutIn' })["by"](0.05, { "position": new Vec3(0, -2, 0) }, { "easing": 'sineOutIn' })["start"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user