Commit ac20a2a0 authored by liaohongfa's avatar liaohongfa

fix(玩法): 调整判定与平衡参数

- 提高点击与甩动阈值,放宽进球判定范围
- 降低完美出手门槛,调整盖帽与干扰概率
- 优化场景组件布局与相机参数
parent c66d9c92
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
}, },
"autoReleaseAssets": false, "autoReleaseAssets": false,
"_globals": { "_globals": {
"__id__": 13 "__id__": 14
}, },
"_id": "9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d" "_id": "9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d"
}, },
...@@ -69,14 +69,11 @@ ...@@ -69,14 +69,11 @@
"__id__": 3 "__id__": 3
}, },
{ {
"__id__": 6 "__id__": 7
} }
], ],
"_active": true, "_active": true,
"_components": [ "_components": [
{
"__id__": 8
},
{ {
"__id__": 9 "__id__": 9
}, },
...@@ -88,13 +85,16 @@ ...@@ -88,13 +85,16 @@
}, },
{ {
"__id__": 12 "__id__": 12
},
{
"__id__": 13
} }
], ],
"_prefab": null, "_prefab": null,
"_lpos": { "_lpos": {
"__type__": "cc.Vec3", "__type__": "cc.Vec3",
"x": 400, "x": 400,
"y": 225.00000000000003, "y": 225,
"z": 0 "z": 0
}, },
"_lrot": { "_lrot": {
...@@ -136,6 +136,9 @@ ...@@ -136,6 +136,9 @@
}, },
{ {
"__id__": 5 "__id__": 5
},
{
"__id__": 6
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -182,7 +185,7 @@ ...@@ -182,7 +185,7 @@
"_priority": 0, "_priority": 0,
"_fov": 45, "_fov": 45,
"_fovAxis": 0, "_fovAxis": 0,
"_orthoHeight": 278.448275862069, "_orthoHeight": 269.7286012526096,
"_near": 0, "_near": 0,
"_far": 1000, "_far": 1000,
"_color": { "_color": {
...@@ -226,6 +229,18 @@ ...@@ -226,6 +229,18 @@
"__prefab": null, "__prefab": null,
"_id": "0dgsetQiJIPKtz9Y1fmLvB" "_id": "0dgsetQiJIPKtz9Y1fmLvB"
}, },
{
"__type__": "8f2a1s8TV5veoucDR4vOktc",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
},
"_enabled": true,
"__prefab": null,
"_id": "30ZyRvyGNBHKM8J8Y89Dac"
},
{ {
"__type__": "cc.Node", "__type__": "cc.Node",
"_name": "GameRoot", "_name": "GameRoot",
...@@ -238,7 +253,7 @@ ...@@ -238,7 +253,7 @@
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 7 "__id__": 8
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -277,7 +292,7 @@ ...@@ -277,7 +292,7 @@
"_objFlags": 0, "_objFlags": 0,
"__editorExtras__": {}, "__editorExtras__": {},
"node": { "node": {
"__id__": 6 "__id__": 7
}, },
"_enabled": true, "_enabled": true,
"__prefab": null, "__prefab": null,
...@@ -312,7 +327,7 @@ ...@@ -312,7 +327,7 @@
"_contentSize": { "_contentSize": {
"__type__": "cc.Size", "__type__": "cc.Size",
"width": 800, "width": 800,
"height": 450.00000000000006 "height": 450
}, },
"_anchorPoint": { "_anchorPoint": {
"__type__": "cc.Vec2", "__type__": "cc.Vec2",
...@@ -381,28 +396,28 @@ ...@@ -381,28 +396,28 @@
{ {
"__type__": "cc.SceneGlobals", "__type__": "cc.SceneGlobals",
"ambient": { "ambient": {
"__id__": 14 "__id__": 15
}, },
"shadows": { "shadows": {
"__id__": 15 "__id__": 16
}, },
"_skybox": { "_skybox": {
"__id__": 16 "__id__": 17
}, },
"fog": { "fog": {
"__id__": 17 "__id__": 18
}, },
"octree": { "octree": {
"__id__": 18 "__id__": 19
}, },
"skin": { "skin": {
"__id__": 19 "__id__": 20
}, },
"lightProbeInfo": { "lightProbeInfo": {
"__id__": 20 "__id__": 21
}, },
"postSettings": { "postSettings": {
"__id__": 21 "__id__": 22
}, },
"bakedWithStationaryMainLight": false, "bakedWithStationaryMainLight": false,
"bakedWithHighpLightmap": false "bakedWithHighpLightmap": false
......
[
{
"__type__": "cc.SceneAsset",
"_name": "test",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
"scene": {
"__id__": 1
}
},
{
"__type__": "cc.Scene",
"_name": "test",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
"_children": [
{
"__id__": 2
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 1073741824,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"autoReleaseAssets": false,
"_globals": {
"__id__": 11
},
"_id": "1579147e-6a68-4847-979e-9537d4ab56c3"
},
{
"__type__": "cc.Node",
"_name": "Canvas",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 1
},
"_children": [
{
"__id__": 3
},
{
"__id__": 5
}
],
"_active": true,
"_components": [
{
"__id__": 6
},
{
"__id__": 7
},
{
"__id__": 8
},
{
"__id__": 9
},
{
"__id__": 10
}
],
"_prefab": null,
"_lpos": {
"__type__": "cc.Vec3",
"x": 400,
"y": 225,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": "1f8cfa16-5396-4510-82f2-8f3514ffe58a"
},
{
"__type__": "cc.Node",
"_name": "Camera",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 4
}
],
"_prefab": null,
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 1000
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 1073741824,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": "28bf8b1c-5302-45a7-83a0-7ee40efffa83"
},
{
"__type__": "cc.Camera",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 3
},
"_enabled": true,
"__prefab": null,
"_projection": 0,
"_priority": 0,
"_fov": 45,
"_fovAxis": 0,
"_orthoHeight": 269.7286012526096,
"_near": 0,
"_far": 1000,
"_color": {
"__type__": "cc.Color",
"r": 12,
"g": 18,
"b": 38,
"a": 255
},
"_depth": 1,
"_stencil": 0,
"_clearFlags": 7,
"_rect": {
"__type__": "cc.Rect",
"x": 0,
"y": 0,
"width": 1,
"height": 1
},
"_aperture": 19,
"_shutter": 7,
"_iso": 0,
"_screenScale": 1,
"_visibility": 41943040,
"_targetTexture": null,
"_postProcess": null,
"_usePostProcess": false,
"_cameraType": -1,
"_trackingType": 0,
"_id": "01e9cddc-8825-41f1-8437-08f0d68abc68"
},
{
"__type__": "cc.Node",
"_name": "GameRoot",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 2
},
"_children": [],
"_active": true,
"_components": [],
"_prefab": null,
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_mobility": 0,
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": "2f0620c2-6bc4-4982-adb7-ee9fb148d90d"
},
{
"__type__": "cc.Canvas",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": null,
"_cameraComponent": {
"__id__": 4
},
"_alignCanvasWithScreen": true,
"_id": "3c8c0732-86ec-4d74-8672-315fd4af3c2d"
},
{
"__type__": "cc.UITransform",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": null,
"_contentSize": {
"__type__": "cc.Size",
"width": 800,
"height": 450
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": "51fbc934-362a-4c49-8a15-38d5420138d0"
},
{
"__type__": "cc.Widget",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": null,
"_alignFlags": 45,
"_target": null,
"_left": 0,
"_right": 0,
"_top": 0,
"_bottom": 0,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 0,
"_originalHeight": 0,
"_alignMode": 2,
"_lockFlags": 0,
"_id": "37496d4b-b792-497d-b9a5-b8b1425c5b29"
},
{
"__type__": "8f2a1s8TV5veoucDR4vOktc",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": null,
"_id": "16RKZ4YPxD3ZD8Wu9d52/e"
},
{
"__type__": "9a0b1wtPk9aa3yNng8aKzxN",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 2
},
"_enabled": true,
"__prefab": null,
"_id": "bfmS4t+R5DmLMH6sqkNIIR"
},
{
"__type__": "cc.SceneGlobals",
"ambient": {
"__id__": 12
},
"shadows": {
"__id__": 13
},
"_skybox": {
"__id__": 14
},
"fog": {
"__id__": 15
},
"octree": {
"__id__": 16
},
"skin": {
"__id__": 17
},
"lightProbeInfo": {
"__id__": 18
},
"postSettings": {
"__id__": 19
},
"bakedWithStationaryMainLight": false,
"bakedWithHighpLightmap": false
},
{
"__type__": "cc.AmbientInfo",
"_skyColorHDR": {
"__type__": "cc.Vec4",
"x": 0.2,
"y": 0.5,
"z": 0.8,
"w": 0.520833125
},
"_skyColor": {
"__type__": "cc.Vec4",
"x": 0.2,
"y": 0.5,
"z": 0.8,
"w": 0.520833125
},
"_skyIllumHDR": 20000,
"_skyIllum": 20000,
"_groundAlbedoHDR": {
"__type__": "cc.Vec4",
"x": 0.2,
"y": 0.2,
"z": 0.2,
"w": 1
},
"_groundAlbedo": {
"__type__": "cc.Vec4",
"x": 0.2,
"y": 0.2,
"z": 0.2,
"w": 1
},
"_skyColorLDR": {
"__type__": "cc.Vec4",
"x": 0.452588,
"y": 0.607642,
"z": 0.755699,
"w": 0
},
"_skyIllumLDR": 0.8,
"_groundAlbedoLDR": {
"__type__": "cc.Vec4",
"x": 0.618555,
"y": 0.577848,
"z": 0.544564,
"w": 0
}
},
{
"__type__": "cc.ShadowsInfo",
"_enabled": false,
"_type": 0,
"_normal": {
"__type__": "cc.Vec3",
"x": 0,
"y": 1,
"z": 0
},
"_distance": 0,
"_planeBias": 1,
"_shadowColor": {
"__type__": "cc.Color",
"r": 76,
"g": 76,
"b": 76,
"a": 255
},
"_maxReceived": 4,
"_size": {
"__type__": "cc.Vec2",
"x": 1024,
"y": 1024
}
},
{
"__type__": "cc.SkyboxInfo",
"_envLightingType": 0,
"_envmapHDR": null,
"_envmap": null,
"_envmapLDR": null,
"_diffuseMapHDR": null,
"_diffuseMapLDR": null,
"_enabled": false,
"_useHDR": true,
"_editableMaterial": null,
"_reflectionHDR": null,
"_reflectionLDR": null,
"_rotationAngle": 0
},
{
"__type__": "cc.FogInfo",
"_type": 0,
"_fogColor": {
"__type__": "cc.Color",
"r": 200,
"g": 200,
"b": 200,
"a": 255
},
"_enabled": false,
"_fogDensity": 0.3,
"_fogStart": 0.5,
"_fogEnd": 300,
"_fogAtten": 5,
"_fogTop": 1.5,
"_fogRange": 1.2,
"_accurate": false
},
{
"__type__": "cc.OctreeInfo",
"_enabled": false,
"_minPos": {
"__type__": "cc.Vec3",
"x": -1024,
"y": -1024,
"z": -1024
},
"_maxPos": {
"__type__": "cc.Vec3",
"x": 1024,
"y": 1024,
"z": 1024
},
"_depth": 8
},
{
"__type__": "cc.SkinInfo",
"_enabled": true,
"_blurRadius": 0.01,
"_sssIntensity": 3
},
{
"__type__": "cc.LightProbeInfo",
"_giScale": 1,
"_giSamples": 1024,
"_bounces": 2,
"_reduceRinging": 0,
"_showProbe": true,
"_showWireframe": true,
"_showConvex": false,
"_data": null,
"_lightProbeSphereVolume": 1
},
{
"__type__": "cc.PostSettingsInfo",
"_toneMappingType": 0
}
]
\ No newline at end of file
{
"ver": "1.1.50",
"importer": "scene",
"imported": true,
"uuid": "1579147e-6a68-4847-979e-9537d4ab56c3",
"files": [
".json"
],
"subMetas": {},
"userData": {}
}
...@@ -222,7 +222,7 @@ export class InputManager { ...@@ -222,7 +222,7 @@ export class InputManager {
this.shootFiredFromHold = false; this.shootFiredFromHold = false;
} }
} else if (info.kind === 'flick') { } else if (info.kind === 'flick') {
const moved = this.distPt(info.sx, info.sy, info.x, info.y) > 18; const moved = this.distPt(info.sx, info.sy, info.x, info.y) > 35;
if (!moved && info.t < 0.25) { if (!moved && info.t < 0.25) {
this.pendingTaps.push({ x: info.x, y: info.y }); this.pendingTaps.push({ x: info.x, y: info.y });
} else if (moved) { } else if (moved) {
......
...@@ -190,7 +190,7 @@ export function ballUpdate(ball: BallState, dt: number): { score: number } | nul ...@@ -190,7 +190,7 @@ export function ballUpdate(ball: BallState, dt: number): { score: number } | nul
// 进球判定(优先于碰撞):球心自 rimY+4 之上向下穿越该高度 // 进球判定(优先于碰撞):球心自 rimY+4 之上向下穿越该高度
if (ball.vy > 0 && if (ball.vy > 0 &&
Math.abs(ball.x - COURT.rimX) < 13 && Math.abs(ball.x - COURT.rimX) < 20 &&
ball.py < COURT.rimY + 4 && ball.py < COURT.rimY + 4 &&
ball.y >= COURT.rimY + 4) { ball.y >= COURT.rimY + 4) {
return { score: ball.shotValue }; return { score: ball.shotValue };
...@@ -254,7 +254,7 @@ export function launchAuto(match: MatchState, shooter: PlayerState, q: number, o ...@@ -254,7 +254,7 @@ export function launchAuto(match: MatchState, shooter: PlayerState, q: number, o
match.dunk = { player: shooter, t: 0 }; match.dunk = { player: shooter, t: 0 };
shooter.state = 'dunk'; shooter.state = 'dunk';
ball.shooterIdx = shooter.idx; ball.shooterIdx = shooter.idx;
ball.perfect = q > 0.85; ball.perfect = q > 0.80;
ball.shotValue = 2; ball.shotValue = 2;
return; return;
} }
...@@ -289,7 +289,7 @@ export function launchVelocity(match: MatchState, shooter: PlayerState, vx: numb ...@@ -289,7 +289,7 @@ export function launchVelocity(match: MatchState, shooter: PlayerState, vx: numb
match.dunk = { player: shooter, t: 0 }; match.dunk = { player: shooter, t: 0 };
shooter.state = 'dunk'; shooter.state = 'dunk';
ball.shooterIdx = shooter.idx; ball.shooterIdx = shooter.idx;
ball.perfect = q > 0.85; ball.perfect = q > 0.80;
ball.shotValue = 2; ball.shotValue = 2;
return; return;
} }
...@@ -309,7 +309,7 @@ function releaseBall(match: MatchState, shooter: PlayerState, bx: number, by: nu ...@@ -309,7 +309,7 @@ function releaseBall(match: MatchState, shooter: PlayerState, bx: number, by: nu
ball.shotValue = value; ball.shotValue = value;
ball.px = bx; ball.py = by; ball.px = bx; ball.py = by;
ball.shooterIdx = shooter.idx; ball.shooterIdx = shooter.idx;
ball.perfect = q > 0.85; ball.perfect = q > 0.80;
shooter.hasBall = false; shooter.hasBall = false;
shooter.state = 'shoot'; shooter.state = 'shoot';
shooter.stateT = 0; shooter.stateT = 0;
...@@ -320,14 +320,14 @@ function releaseBall(match: MatchState, shooter: PlayerState, bx: number, by: nu ...@@ -320,14 +320,14 @@ function releaseBall(match: MatchState, shooter: PlayerState, bx: number, by: nu
match.aiBaitJump = false; match.aiBaitJump = false;
// 盖帽/干扰判定(假动作骗起的空位出手,盖帽概率大幅降低) // 盖帽/干扰判定(假动作骗起的空位出手,盖帽概率大幅降低)
const blockChance = opp.isAI ? (0.28 + match.difficulty * 0.1) : 0.5; const blockChance = opp.isAI ? (0.20 + match.difficulty * 0.08) : 0.5;
if (Math.abs(opp.x - shooter.x) < 95 && !opp.grounded && Math.random() < blockChance * (openShot ? 0.2 : 1)) { if (Math.abs(opp.x - shooter.x) < 95 && !opp.grounded && Math.random() < blockChance * (openShot ? 0.2 : 1)) {
ball.vx = -shooter.facing * rand(180, 320); ball.vx = -shooter.facing * rand(180, 320);
ball.vy = -rand(140, 240); ball.vy = -rand(140, 240);
sfxBlock(); sfxBlock();
vibrate(); vibrate();
pushToast(match, '盖帽!', opp.x, opp.y - 96); pushToast(match, '盖帽!', opp.x, opp.y - 96);
} else if (!openShot && Math.abs(opp.x - shooter.x) < 80 && Math.random() < 0.10) { } else if (!openShot && Math.abs(opp.x - shooter.x) < 80 && Math.random() < 0.18) {
ball.vx = -shooter.facing * rand(120, 220); ball.vx = -shooter.facing * rand(120, 220);
ball.vy = -rand(80, 160); ball.vy = -rand(80, 160);
sfxBlock(); sfxBlock();
...@@ -637,7 +637,7 @@ export function updateMatch(match: MatchState, input: InputFrame, dt: number): v ...@@ -637,7 +637,7 @@ export function updateMatch(match: MatchState, input: InputFrame, dt: number): v
ball.shotValue = 2; ball.shotValue = 2;
} else { } else {
const v = resolveFlick(match, holder, input.flick); const v = resolveFlick(match, holder, input.flick);
if (v.q > 0.85) { if (v.q > 0.80) {
pushToast(match, '完美出手!', holder.x, holder.y - 96); pushToast(match, '完美出手!', holder.x, holder.y - 96);
vibrate(); vibrate();
} }
...@@ -703,7 +703,7 @@ export function updateMatch(match: MatchState, input: InputFrame, dt: number): v ...@@ -703,7 +703,7 @@ export function updateMatch(match: MatchState, input: InputFrame, dt: number): v
if (dk.t >= 0.34) { if (dk.t >= 0.34) {
const shooter = dk.player; const shooter = dk.player;
const opp = match.players[1 - shooter.idx]; const opp = match.players[1 - shooter.idx];
const blocked = Math.abs(opp.x - shooter.x) < 85 && !opp.grounded && Math.random() < 0.5; const blocked = Math.abs(opp.x - shooter.x) < 85 && !opp.grounded && Math.random() < 0.35;
if (blocked) { if (blocked) {
ball.held = null; ball.held = null;
shooter.hasBall = false; shooter.hasBall = false;
......
{
"__version__": "3.0.9",
"game": {
"name": "UNKNOW GAME",
"app_id": "UNKNOW",
"c_id": "0"
},
"appConfigMaps": [
{
"app_id": "UNKNOW",
"config_id": "054c53"
}
],
"configs": [
{
"app_id": "UNKNOW",
"config_id": "054c53",
"config_name": "Default",
"config_remarks": "",
"services": []
}
]
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment