Complete Update NPC AI
This commit is contained in:
@@ -242,6 +242,21 @@ namespace Invector.vShooter
|
||||
#endregion
|
||||
|
||||
#region Protected Methods
|
||||
protected virtual void Start()
|
||||
{
|
||||
// TỰ ĐỘNG SỬA LỖI LAYER: Đảm bảo súng luôn có thể bắn trúng Enemy
|
||||
int enemyLayer = LayerMask.NameToLayer("Enemy");
|
||||
if (enemyLayer != -1)
|
||||
{
|
||||
// Cưỡng bức thêm Layer Enemy vào mask (Dùng toán tử bit OR)
|
||||
hitLayer.value |= (1 << enemyLayer);
|
||||
Debug.Log($"<color=green>[WEAPON AUTO-FIX]</color> {gameObject.name} hiện đã có thể bắn trúng Layer 'Enemy' (Mask mới: {hitLayer.value}).");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("<color=red>[WEAPON ERROR]</color> Bạn chưa tạo Layer tên là 'Enemy' trong Project Settings > Tags and Layers!");
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void OnDestroy()
|
||||
{
|
||||
@@ -256,6 +271,14 @@ namespace Invector.vShooter
|
||||
{
|
||||
ShootBullet(startPoint, endPoint);
|
||||
ShotEffect();
|
||||
|
||||
// Gửi tín hiệu tiếng súng cho toàn bộ AI lân cận
|
||||
var hitColliders = Physics.OverlapSphere(muzzle.position, 50f);
|
||||
foreach (var hit in hitColliders)
|
||||
{
|
||||
var ai = hit.GetComponentInParent<EnemyAI>();
|
||||
if (ai != null) ai.TriggerCombatAlert(muzzle.position);
|
||||
}
|
||||
}
|
||||
public virtual Vector3 Dispersion(Vector3 aim, float dispersion)
|
||||
{
|
||||
@@ -297,6 +320,18 @@ namespace Invector.vShooter
|
||||
|
||||
protected virtual void ShootBullet(Vector3 startPoint, Vector3 endPoint)
|
||||
{
|
||||
// TỰ ĐỘNG SỬA LỖI LAYER (Cưỡng bức mỗi khi bắn):
|
||||
int enemyLayer = LayerMask.NameToLayer("Enemy");
|
||||
if (enemyLayer != -1)
|
||||
{
|
||||
// Ép thêm Layer Enemy vào mask nếu nó bị thiếu
|
||||
if ((hitLayer.value & (1 << enemyLayer)) == 0)
|
||||
{
|
||||
hitLayer.value |= (1 << enemyLayer);
|
||||
Debug.Log($"<color=orange>[WEAPON FORCE-FIX]</color> Đã cưỡng bức thêm Layer 'Enemy' vào {gameObject.name} khi bắn.");
|
||||
}
|
||||
}
|
||||
|
||||
var dir = endPoint - startPoint;
|
||||
//StartCoroutine(DebugDispersion(startPoint, endPoint));
|
||||
var rotation = Quaternion.LookRotation(dir);
|
||||
|
||||
Reference in New Issue
Block a user