feat(Connect Distance): 添加了玩家最大可连接距离的逻辑

This commit is contained in:
2025-10-20 10:42:32 +08:00
parent 2b4a7af1e1
commit ec905d2a27
3 changed files with 220 additions and 3 deletions

View File

@@ -330,6 +330,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
IsEnableConnecting: 1 IsEnableConnecting: 1
raycaster: {fileID: 8217262775185484522} raycaster: {fileID: 8217262775185484522}
maxConnectDistance: 10.5
--- !u!1 &3610935294554348573 --- !u!1 &3610935294554348573
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -310,6 +310,74 @@ MonoBehaviour:
m_LightCookieSize: {x: 1, y: 1} m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0} m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 1 m_SoftShadowQuality: 1
--- !u!1001 &473911345
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalPosition.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalPosition.z
value: 10
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2052340463965227198, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_Name
value: Button (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ddd89e93db279184daa80d86bd4e770f, type: 3}
--- !u!1001 &769057572 --- !u!1001 &769057572
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -378,6 +446,74 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9e2e93bf07726014bac5a458c32e697f, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 9e2e93bf07726014bac5a458c32e697f, type: 3}
--- !u!1001 &865274353
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalPosition.x
value: 10
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalPosition.y
value: 1.6
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalPosition.z
value: 10
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2052340463965227198, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3}
propertyPath: m_Name
value: Button (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ddd89e93db279184daa80d86bd4e770f, type: 3}
--- !u!1001 &993640446 --- !u!1001 &993640446
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -688,6 +824,74 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 781c629235eee4f4eb34f1e763aa7f67, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 781c629235eee4f4eb34f1e763aa7f67, type: 3}
--- !u!1001 &1751629950
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalPosition.x
value: -5
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalPosition.y
value: 1.5
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalPosition.z
value: 10
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2729643726423589850, guid: b3e24e2df98d14e4ebc08cc68c071afa,
type: 3}
propertyPath: m_Name
value: Door (3)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3}
--- !u!1001 &1948851238 --- !u!1001 &1948851238
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -1002,17 +1206,17 @@ PrefabInstance:
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3} type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -5 value: 5
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3} type: 3}
propertyPath: m_LocalPosition.y propertyPath: m_LocalPosition.y
value: 1 value: 1.3
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3} type: 3}
propertyPath: m_LocalPosition.z propertyPath: m_LocalPosition.z
value: -5 value: 10
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f,
type: 3} type: 3}
@@ -1277,9 +1481,12 @@ SceneRoots:
- {fileID: 7020889523296792185} - {fileID: 7020889523296792185}
- {fileID: 2021089518} - {fileID: 2021089518}
- {fileID: 2088331975902746738} - {fileID: 2088331975902746738}
- {fileID: 1751629950}
- {fileID: 1948851238} - {fileID: 1948851238}
- {fileID: 993640446} - {fileID: 993640446}
- {fileID: 1781028406820323425} - {fileID: 1781028406820323425}
- {fileID: 366996911271636373} - {fileID: 366996911271636373}
- {fileID: 6191742170513974480} - {fileID: 6191742170513974480}
- {fileID: 473911345}
- {fileID: 865274353}
- {fileID: 6350903300567888677} - {fileID: 6350903300567888677}

View File

@@ -11,6 +11,7 @@ namespace Script.Gameplay.Player
{ {
public bool IsEnableConnecting = true; // 是否启用连接功能 public bool IsEnableConnecting = true; // 是否启用连接功能
[SerializeField] private FirstPersonRaycaster raycaster; // 第一人称射线检测器 [SerializeField] private FirstPersonRaycaster raycaster; // 第一人称射线检测器
[SerializeField] private float maxConnectDistance = 10f; // 最大连接距离
private IConnectable currentTarget; // 当前注视的可连接对象 private IConnectable currentTarget; // 当前注视的可连接对象
private IConnectable previousGazedTarget; // 上一次注视的 IConnectable用于触发进入/离开) private IConnectable previousGazedTarget; // 上一次注视的 IConnectable用于触发进入/离开)
@@ -111,6 +112,14 @@ namespace Script.Gameplay.Player
if(!IsEnableConnecting) return; if(!IsEnableConnecting) return;
if (outTarget != null && inputTarget != null && outTarget != inputTarget) if (outTarget != null && inputTarget != null && outTarget != inputTarget)
{ {
//计算距离
float distance = Vector3.Distance(outTarget.GetPosition(), inputTarget.GetPosition());
if (distance > maxConnectDistance)
{
Debug.Log("Cannot create connection: targets are too far apart.");
return;
}
// 创建连接线
ConnectionLine connectionLine = ConnectionLineManager.Instance.GenerateConnectionLine(outTarget, inputTarget); ConnectionLine connectionLine = ConnectionLineManager.Instance.GenerateConnectionLine(outTarget, inputTarget);
outTarget.OutputConnectionLine = connectionLine; outTarget.OutputConnectionLine = connectionLine;
inputTarget.InputConnectionLine = connectionLine; inputTarget.InputConnectionLine = connectionLine;