Compare commits
4 Commits
fd7905561b
...
a65ead915b
| Author | SHA1 | Date | |
|---|---|---|---|
| a65ead915b | |||
| 925d74aa57 | |||
| e2c40827bf | |||
| a85f4d8fed |
@@ -75,7 +75,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject
|
||||
GlobalObjectIdHash: 1475696401
|
||||
GlobalObjectIdHash: 4213269672
|
||||
InScenePlacedSourceGlobalObjectIdHash: 0
|
||||
DeferredDespawnTick: 0
|
||||
Ownership: 1
|
||||
@@ -106,7 +106,6 @@ MonoBehaviour:
|
||||
followDistance: 5
|
||||
movementSpeed: 5
|
||||
resourcesPerMining: 5
|
||||
recruitmentCost: 0
|
||||
interactionAnimationTrigger:
|
||||
miningEffectPrefab: {fileID: 0}
|
||||
depositEffectPrefab: {fileID: 0}
|
||||
|
||||
@@ -312,6 +312,12 @@ namespace Northbound
|
||||
collider.enabled = false;
|
||||
}
|
||||
|
||||
// Disable NavMeshObstacles in preview (they act as obstacles for NavMeshAgent)
|
||||
foreach (var obstacle in previewObject.GetComponentsInChildren<UnityEngine.AI.NavMeshObstacle>())
|
||||
{
|
||||
obstacle.enabled = false;
|
||||
}
|
||||
|
||||
Debug.Log($"[BuildingPlacement] 프리뷰 생성됨: {data.buildingName}");
|
||||
}
|
||||
|
||||
@@ -528,6 +534,12 @@ namespace Northbound
|
||||
collider.enabled = false;
|
||||
}
|
||||
|
||||
// Disable NavMeshObstacles in preview (they act as obstacles for NavMeshAgent)
|
||||
foreach (var obstacle in preview.GetComponentsInChildren<UnityEngine.AI.NavMeshObstacle>())
|
||||
{
|
||||
obstacle.enabled = false;
|
||||
}
|
||||
|
||||
dragPreviewObjects.Add(preview);
|
||||
|
||||
if (isValid)
|
||||
|
||||
@@ -154,6 +154,15 @@ namespace Northbound
|
||||
if (_isRecalculatingPath) return; // 코루틴 대기 중이면 중단
|
||||
if (_coreTransform == null) { FindCore(); return; }
|
||||
|
||||
// 0. Player 감지 (코어로 가는 도중에도 Player를 타겟팅)
|
||||
GameObject detectedPlayer = DetectTarget();
|
||||
if (detectedPlayer != null)
|
||||
{
|
||||
SetTargetPlayer(detectedPlayer);
|
||||
TransitionToState(EnemyAIState.ChasePlayer);
|
||||
return;
|
||||
}
|
||||
|
||||
// 1. 코어로 가는 경로가 '완전(Complete)'한지 먼저 확인
|
||||
// NavMesh가 갱신되었다면 에이전트는 즉시 Complete 상태가 됩니다.
|
||||
if (_agent.hasPath && _agent.pathStatus == NavMeshPathStatus.PathComplete)
|
||||
|
||||
@@ -21,7 +21,6 @@ namespace Northbound
|
||||
public float followDistance = 3f;
|
||||
public float movementSpeed = 3.5f;
|
||||
public int resourcesPerMining = 5;
|
||||
public int recruitmentCost = 10;
|
||||
|
||||
[Header("Interaction")]
|
||||
public string interactionAnimationTrigger = "Recruit";
|
||||
@@ -373,13 +372,6 @@ namespace Northbound
|
||||
if (_ownerPlayerId.Value != ulong.MaxValue && _ownerPlayerId.Value != playerId)
|
||||
return false;
|
||||
|
||||
if (_ownerPlayerId.Value == ulong.MaxValue)
|
||||
{
|
||||
var coreResourceManager = CoreResourceManager.Instance;
|
||||
if (coreResourceManager != null && !coreResourceManager.CanAfford(recruitmentCost))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -408,20 +400,6 @@ namespace Northbound
|
||||
[Rpc(SendTo.Server, InvokePermission = RpcInvokePermission.Everyone)]
|
||||
private void RecruitWorkerServerRpc(ulong playerId, ulong workerNetObjectId)
|
||||
{
|
||||
var coreResourceManager = CoreResourceManager.Instance;
|
||||
if (coreResourceManager == null)
|
||||
{
|
||||
Debug.LogWarning("[Worker] CoreResourceManager 인스턴스를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!coreResourceManager.CanAfford(recruitmentCost))
|
||||
{
|
||||
Debug.LogWarning($"[Worker] 코어 자원이 부족합니다. 필요: {recruitmentCost}");
|
||||
return;
|
||||
}
|
||||
|
||||
coreResourceManager.SpendResources(recruitmentCost);
|
||||
_ownerPlayerId.Value = playerId;
|
||||
SetState(WorkerState.Following);
|
||||
UpdatePlayerTransform();
|
||||
@@ -463,11 +441,7 @@ namespace Northbound
|
||||
{
|
||||
if (_ownerPlayerId.Value == ulong.MaxValue)
|
||||
{
|
||||
var coreResourceManager = CoreResourceManager.Instance;
|
||||
if (coreResourceManager != null && !coreResourceManager.CanAfford(recruitmentCost))
|
||||
return $"Resource Required: {recruitmentCost})";
|
||||
|
||||
return $"[E] Recruit Worker: {recruitmentCost}";
|
||||
return "[E] Recruit Worker";
|
||||
}
|
||||
else if (NetworkManager.Singleton != null && _ownerPlayerId.Value == NetworkManager.Singleton.LocalClientId)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user