2017-01-13 1 views
1

나는 3 점 사이를 이동하는 공격 무기를 만들려고합니다. 캐릭터의 주요 장소, 스윙의 상단 및 스윙의 하단. 그 후에 그것은 손으로 돌아 간다.유니티의 목표물 반경 확인

일반적인 "Ground Check for Jumping"코드를 사용하여 루프에서 "앞으로 이동"을 사용하면 다음 단계로 변경하기 위해 정확히 맞지 않으므로 코드를 약간 수정했습니다.

두 가지 오류는 모두 "reachedTarget"행에 있습니다.

The best overloaded method match for `UnityEngine.Physics2D.OverlapCircle(UnityEngine.Vector2, float, int)' has some invalid arguments 

Argument `#3' cannot convert `UnityEngine.Vector3' expression to type `int' 

다음은 코드입니다.

void TargetCheck(GameObject target) 
{ 
    //Returns true when the sword is over the target 
    reachedTarget = Physics2D.OverlapCircle(transform.position, 0.1f, target.transform.position); 
} 

내가 여기서 잘못하고있는 것이 확실하지 않습니다. 어떤 도움을 주셔서 감사합니다 :)

+3

target.transform.position이 정수가 아닙니다. – SlapY

+0

편집 내 대답 – SlapY

답변

1

"변환 할 수 없습니다 X y를 입력하는 식 "은 항상 y 유형이 필요한 x 유형의 항목을 입력하려고한다는 것을 의미합니다. 예 : int number = "hello world"; 작동 안 할 것이다. int를 문자열로 변환하려고합니다.

int LayerMask을 입력하고 target.transform.position을 입력하려고합니다. See documentation on OverlapCircle

레이어 마스크와 비트 시프트 방법에 대해 잘 모르겠 으면 public LayerMask layermask;을 선언하고 Unity에서이를 직렬화하도록하십시오. 이렇게하면 레이어를 채울 수있는 확인란 버튼이 표시됩니다.

편집 : OP가 원하는 내용이 Vector3.Distance 인 것처럼 보입니다.

+0

아, 고마워. 그래서 나는 이렇게 할 수 없다. 한 물체가 다른 물체와 충분히 가까워지면 어떻게 다른 것을 볼 수 있습니까? 나는'if (sword.transform.position == target.transform.position)'을 가졌지 만 절대 완벽하게 맞지는 않습니다. 반경을 더하는 방법이 있습니까? – crabcrabcam

+0

레이크 캐스트를 쏘고 길이/타겟 히트를 보거나 Colliders를 추가하여 충돌 시점을 확인할 수 있습니다! 그것은 2D 게임의 권리입니까? – Maakep

+0

예, 2D 게임입니다. 나는 Raycasts를하는 방법을 모른다. 그러나 나는 그것을보고 그것을 시도 할 것이다. 도움을 주셔서 감사합니다. – crabcrabcam

0

아마 세 번째 매개 변수가 필요하지 않습니다. 그것은 충돌하려는 객체의 레이어 여야합니다. 목표의 레이어 ID인지 확인하십시오.

이후로 도달 타겟은 대상의 Collider2D 구성 요소와 비교되어야합니다. 그것이 일치하면 - 당신은 명중을 얻었습니다.

void TargetCheck(GameObject target) 
{ 
    //Returns true when the sword is over the target 
    var CollidedWith = Physics2D.OverlapCircle(transform.position, 0.1f, *LayerYouWantToCollideWith*); 

    var TargetCollider2D = target.GetComponent<Collider2D>(); 
    bool CollidedWithTarget = CollidedWith == TargetCollider2D; 
} 

PS : - 게으른 사람들을위한

편집 뭔가 같이해야 당신은 아마 사전에 대상의 Collider2D 구성 요소를 얻고 어딘가에 저장해야합니다 ..