2017-01-13 18 views
1

私は3点の間を移動する攻撃的な剣のものを作ろうとしています。キャラクターハンドの主な場所、スイングのトップとスイングの底。その後、手に戻ります。ユニティのオブジェクトターゲット半径のチェック

一般的な「ジャンプチェック」のコードを使用して、ループ内で「手前に移動」を使用すると次の段階に変更することがないため、少し修正しました。

どちらのエラーも "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を変換することはできません...おそらく、事前にあなたのターゲットのCollider2Dコンポーネントを取得し、どこかに保存する必要がありますyを入力する式は、常にy型が必要なx型のものを入力しようとしていることを意味します。たとえば、次のようになります。int number = "hello world";動作しないでしょう。 intを文字列に変換しようとしています

int LayerMasktarget.transform.positionと入力しようとしています。 See documentation on OverlapCircle

レイヤーマスクとビットシフトについてわからない場合は、public LayerMask layermask;を宣言し、Unityにシリアル化させます。これは、どのレイヤーを埋めるためのチェックボックスボタンを与えます。

編集:表示されますVector3.Distance OPが欲しかったものでした!

+0

ああ、ありがとう。だから私はこのようにすることはできません。 1つのオブジェクトが他のオブジェクトに十分に近いかどうかを他の方法で確認できます。私は 'if(sword.transform.position == target.transform.position)'を持っていましたが、決して完璧に打ち砕かれませんでした。これに半径を追加する方法はありますか? – crabcrabcam

+0

レイキャストを撃って長さ/ターゲットヒットを見るか、コライダーを追加して、衝突時にチェックできます!それは2Dゲームの権利ですか? – Maakep

+0

はい、2Dゲームです。レイキャストのやり方は分かりませんが、私はそれを見て行きます。助けてくれてありがとう: – crabcrabcam

0

おそらく、3番目のパラメータは必要ありません。これは、オブジェクトを衝突させたいレイヤーでなければなりません。ターゲットのレイヤー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:あなたは