
前提
Unityで神経衰弱みたいなゲームを作ろうとしています。
実現したいこと
Card1とCard2のY座標が690の位置に移動したら、seikaicounterを1増やしたい。
発生している問題・エラーメッセージ
Card1とCard2のY座標が690になっても、seikaicounterが増えない。
該当のソースコード
C#
1using UnityEngine; 2 3public class GManager : MonoBehaviour 4{ 5 public GameObject Card1; 6 public GameObject Card2; 7 public GameObject Card3; 8 public GameObject Card4; 9 public GameObject Card5; 10 public GameObject Card6; 11 public GameObject Card7; 12 public GameObject Card8; 13 [SerializeField] private int selectcounter = 0; 14 [SerializeField] private int seikaicounter = 0; 15 16 // Start is called before the first frame update 17 void Start() 18 { 19 20 } 21 22 // Update is called once per frame 23 void Update() 24 { 25 Transform Card1transform = Card1.transform; 26 Vector3 Card1pos = Card1transform.position; 27 28 Transform Card2transform = Card2.transform; 29 Vector3 Card2pos = Card2transform.position; 30 31 Transform Card3transform = Card3.transform; 32 Vector3 Card3pos = Card3transform.position; 33 34 Transform Card4transform = Card4.transform; 35 Vector3 Card4pos = Card4transform.position; 36 37 Transform Card5transform = Card5.transform; 38 Vector3 Card5pos = Card5transform.position; 39 40 Transform Card6transform = Card6.transform; 41 Vector3 Card6pos = Card6transform.position; 42 43 Transform Card7transform = Card7.transform; 44 Vector3 Card7pos = Card7transform.position; 45 46 Transform Card8transform = Card8.transform; 47 Vector3 Card8pos = Card8transform.position; 48 49 if(Card1pos.y == 690 && Card2pos.y == 690) 50 { 51 Debug.Log("nnn"); 52 seikaicounter += 1; 53 } 54 55 if(selectcounter == 3) 56 { 57 selectcounter = 0; 58 } 59 } 60 61 public void Card1Click() 62 { 63 selectcounter += 1; 64 Transform Card1transform = Card1.transform; //transformを取得 65 Vector3 Card1pos = Card1transform.position; //座標を取得 66 Card1pos.y += 10; 67 Card1transform.position = Card1pos; //座標を設定 68 } 69 70 public void Card2Click() 71 { 72 selectcounter += 1; 73 Transform Card2transform = Card2.transform; 74 Vector3 Card2pos = Card2transform.position; 75 Card2pos.y += 10; 76 Card2transform.position = Card2pos; 77 } 78 79 public void Card3Click() 80 { 81 selectcounter += 1; 82 Transform Card3transform = Card3.transform; 83 Vector3 Card3pos = Card3transform.position; 84 Card3pos.y += 10; 85 Card3transform.position = Card3pos; 86 } 87 88 public void Card4Click() 89 { 90 selectcounter += 1; 91 Transform Card4transform = Card4.transform; //transformを取得 92 Vector3 Card4pos = Card4transform.position; //座標を取得 93 Card4pos.y += 10; 94 Card4transform.position = Card4pos; 95 } 96 97 public void Card5Click() 98 { 99 selectcounter += 1; 100 Transform Card5transform = Card5.transform; //transformを取得 101 Vector3 Card5pos = Card5transform.position; //座標を取得 102 Card5pos.y -= 10; 103 Card5transform.position = Card5pos; 104 } 105 106 public void Card6Click() 107 { 108 selectcounter += 1; 109 Transform Card6transform = Card6.transform; //transformを取得 110 Vector3 Card6pos = Card6transform.position; //座標を取得 111 Card6pos.y -= 10; 112 Card6transform.position = Card6pos; 113 } 114 115 public void Card7Click() 116 { 117 selectcounter += 1; 118 Transform Card7transform = Card7.transform; //transformを取得 119 Vector3 Card7pos = Card7transform.position; //座標を取得 120 Card7pos.y -= 10; 121 Card7transform.position = Card7pos; 122 } 123 124 public void Card8Click() 125 { 126 selectcounter += 1; 127 Transform Card8transform = Card8.transform; //transformを取得 128 Vector3 Card8pos = Card8transform.position; //座標を取得 129 Card8pos.y -= 10; 130 Card8transform.position = Card8pos; 131 } 132}
試したこと
if文が原因だと思い、調べてみましたが分かりませんでした。
補足情報(FW/ツールのバージョンなど)
2020.3.20f

Unity のタグをつけてください。
一応補足ですが、浮動小数点数値型でも整数だけ扱う場合は、誤差が生じることはありません。
また浮動小数点同士の計算で発生する誤差は Mathf.Approximately を使って比較したほうが良いかと思います。
※何百回と計算するのであれば別の対応も必要ですが。
とりあえず成功時にデバッグログ確認を行うということをしているのであれば、
各Click関数内にもデバッグログを追加して座標がどうなっているかも見たほうがいいかと思います。

Unity のタグをつけてください。Unity に興味のある人の目を引いて回答を得やするなるというあなたにとってのメリット、自分のように興味のない人はタグを見ただけでスルーできるというメリットがあります。

回答2件
あなたの回答
tips
プレビュー