총알을 적군 유닛쪽으로 날라가게 할려고 transform.position = Vector2.MoveTowards(현재 위치, 타겟위치, Time.deltaTime)
이런 식으로 기능 구현중인데 이러면 총알이 타겟위치로만 날라가고 그 뒤로는 가게 할수가 없네요
float _bulletRemainDistance = Mathf.Abs(_unitAttackRange(유닛의 사거리) - Vector2.Distance(_firstPosition, _targetPosition));
Vector2 direction = (_targetPosition - (Vector2)transform.position).normalized;
_finalTargetPosition = targetPosition * direction * _bulletRemainDistance
이렇게 하면
Vector2.MoveTowards(현재 위치, 타겟위치, Time.deltaTime) 에서 Vector2.MoveTowards(현재 위치, _finalTargetPosition , Time.deltaTime) 이렇게 해봤는데
뭔가 타겟 쪽이 아니라 이상한곳으로 날라가네요
게임방식은 유닛을 소환하고 소환한 유닛이 몬스터를 향해 총알을 쏩니다
총알을 적군 유닛 방향으로 발사한 뒤, 그 방향으로 계속 이동하게 만들려면 방향 벡터를 사용하여 일정한 속도로 이동시키는 것이 일반적입니다. Vector2.MoveTowards는 특정 목표 지점까지만 이동하기 때문에, 목표 지점을 넘어 이동하려면 Rigidbody2D.velocity 또는 Translate를 사용하는 것이 좋습니다. 해결 방법: 1. 방향 벡터 계산: 총알이 날아갈 방향을 정하고 정규화(normalized)하여 속도와 곱합니다. 2. 지속적인 이동: Update 또는 FixedUpdate에서 velocity를 설정하여 계속 이동하게 합니다. - dc App
감사합니다! 시도해보겠습니다
private void FixedUpdate()transform.position += speed * Time.fixedDeltaTime * transform.forward;private void OnTriggerEnter(Collider collider)if (((1 << collider.gameObject.layer) & targetLayer) != 0) TakeDamage();count--;if (count < 0)Release();요래 하시면 될듯
사거리를 lifeTime으로 조절해야한다는 단점이 있긴한데... 심플해서 애용합니다 곡사 적용하기도 쉽고..
이게 상대가 움직여도 쫓아가는 유도탄임? 아니면 그냥 쏜 기점을 기반으로 일직선으로 날아가는거임?
총쏘는곳 시작점, 적위치를 도착점으로 하는 벡터구하고, 단위벡터로 만든 뒤 그 벡터로 움직이게 하고, 속도랑 날아갈 시간 정해주면 될듯