今、UnityでListを使って、向くターゲットを切り替えれるようにしようとしています。
実際にこのような感じで切り替えることができました
C#
1//一部省略 2 void ChangeTarget() 3 { 4 //マウスホイールの取得 5 scroll = Input.GetAxis("Mouse ScrollWheel"); 6 7 if (onOff) 8 { 9 //ターゲットの切り替え 10 //ここで下限を1、上限をリストに入っているオブジェクトの総数として、リストの何番目のオブジェクトをターゲットにするか決める 11 if (scroll > 0 && nowTarget < enemyList.Count - 1) 12 { 13 nowTarget++; 14 } 15 else if (scroll < 0 && nowTarget > 0) 16 { 17 nowTarget--; 18 } 19 20 //ターゲットのトランスフォームを別のスクリプトに送る 21 if (enemyList.Count > 0) 22 { 23 player.target = enemyList[nowTarget].transform; 24 player.targetOn = true; 25 } 26 } 27 else 28 { 29 //off 30 player.targetOn = false; 31 } 32 } 33 34 private void OnTriggerStay(Collider other) 35 { 36 if(other.tag == "Enemy" && Input.GetMouseButtonDown(2)) 37 { 38 //switching 39 onOff = !onOff; 40 if (!onOff) // off ver (reset) 41 { 42 nowTarget = 0; 43 enemyList.Clear(); 44 } 45 } 46 47 //add enemy list 48 if (onOff) 49 { 50 if (other.tag == "Enemy" && !enemyList.Contains(other.gameObject)) 51 { 52 //範囲の中に入ったオブジェクトをリストに入れる 53 enemyList.Add(other.gameObject); 54 } 55 } 56 } 57 58 private void OnTriggerExit(Collider other) 59 { 60 if (other.tag == "Enemy" && enemyList.Contains(other.gameObject)) 61 { 62 //範囲から出たオブジェクトをリストから消す 63 enemyList.Remove(other.gameObject); 64 } 65 } 66
このままだと、リストに追加された順にリストの中身が並んでいるので、ターゲットを選択しようとしても思った通りに選択できませんでした。
なので、画面のより右側にあるゲームオブジェクト順に並び変えてやろうと思いました。そこで、List.Sortを使って、
C#
1enemyList.Sort((a, b) => a.transform.x - b.transform.x);
このように書き、やってみようとしたのですが、visual studioの方でエラーが出てしまい、
CS1061 'transform'に'x'の定義が含まれておらず、型'transform'の最初の引数を受け付けるアクセス可能な拡張メソッド'x'が見つかりませんでした。
と出ました。
じゃあtransformじゃなくて、transform.positionなのかなと思い、
C#
1enemyList.Sort((a, b) => a.transform.position.x - b.transform.position.x);
としてみるとまた、
CS0266 型'float'を'int'に暗黙的に変換できません。暗示的な変換が存在します。(castが不足していないかどうか確認してください)
CS1662 デリゲート戻り値の型に暗黙的に変換できない戻り値の型がブロック内にあるため、ラムダ式を目的のデリート型に変換できません
と二つに増えてしまいました。
今、やりたいことは、ゲームオブジェクトのトランスフォームのx軸が大きい順に並び変えたいです。
どうかよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
unity 2020.3.10f1 (LTS)
Visual Studio 2019 Versition 16.9.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/15 08:18