using UnityEngine; public class EquippableItem : MonoBehaviour { [SerializeField] private WeaponConfig config; public WeaponConfig Config => config; [Header("--- 데미지 밸런스 ---")] [SerializeField] private float lv1Mult = 1.0f; [SerializeField] private float lv2Mult = 1.5f; [SerializeField] private float lv3Mult = 2.5f; // [제거] strengthBonusFactor 변수 삭제 private Rigidbody _rb; private Collider _col; private bool _isThrown; private int _chargeLevel; private Stats _thrower; private Vector3 _originalWorldScale; private void Awake() { _rb = GetComponent(); _col = GetComponent(); _originalWorldScale = transform.lossyScale; } public void OnPickedUp(Transform hand) { _isThrown = false; transform.SetParent(hand); transform.localScale = new Vector3( _originalWorldScale.x / hand.lossyScale.x, _originalWorldScale.y / hand.lossyScale.y, _originalWorldScale.z / hand.lossyScale.z ); transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.identity; if (_rb) _rb.isKinematic = true; if (_col) _col.enabled = false; } public void OnDropped(Vector3 throwDir) { _isThrown = false; transform.SetParent(null); transform.localScale = _originalWorldScale; if (_rb) { _rb.isKinematic = false; Vector3 force = (throwDir + Vector3.up * 0.5f).normalized * 5f; _rb.AddForce(force, ForceMode.Impulse); _rb.AddTorque(Random.insideUnitSphere * 3f, ForceMode.Impulse); } if (_col) _col.enabled = true; } public void OnThrown(Vector3 dir, float force, int lv, Stats s) { _isThrown = true; _chargeLevel = lv; _thrower = s; transform.SetParent(null); transform.localScale = _originalWorldScale; if (_rb) { _rb.isKinematic = false; _rb.AddForce(dir * force, ForceMode.Impulse); _rb.AddTorque(transform.right * 10f, ForceMode.Impulse); } if (_col) _col.enabled = true; } private void OnCollisionEnter(Collision collision) { if (!_isThrown) return; if (_thrower != null && collision.gameObject == _thrower.gameObject) return; if (collision.gameObject.TryGetComponent(out var target)) { float mult = _chargeLevel == 3 ? lv3Mult : (_chargeLevel == 2 ? lv2Mult : lv1Mult); // ✨ [수정] 힘 보너스 로직 제거. (플레이어 기본 공격력 + 무기 대미지) * 차지 배율 float finalDamage = (_thrower.BaseAttackDamage + config.BaseDamage) * mult; target.TakeDamage(finalDamage); Debug.Log($"[투척 적중] {collision.gameObject.name}에게 {finalDamage:F1} 데미지!"); _isThrown = false; } if (collision.gameObject.layer != LayerMask.NameToLayer("Player")) _isThrown = false; } }