うまく行かない・・・  (。>_<。) えーん

ピースが変な角度になるのでスクリプトを修正していきます。

移動時間が長いから押せてしまうのでは?
と言う事で移動時間を0.3秒にしてみました。

ズレる・・・

クリックの方が早く反応します。
0.1秒にするか?でも0.1秒だとほぼ瞬間移動です。
Tween系を入れてる意味が・・・


うーん・・・


ピースを押した時に位置が0、90、180、270になければ
動作しないように試してみます。

スクリプトを次のように変更です。

public void PushPiece(int a)
{
transform = PieceBt[a].GetComponent(); //ピースa番目のTransform情報を取得
float z = transform.localEulerAngles.z;           //Transformからローカル角度を取得

if (z == 0 || z == 90 || z == 180 || z == 270) //角度が固定位置なら動かす
{
transform.DORotate(new Vector3(0f, 0f, z + 90f), 0.5f); //DOTweenで0.5秒かけて90°回転させる
}
}

これなら行けると思って試したのですが、
一回転したらピースが回転しなくなってしまいました。

なぜ?

Piece0のInspectorを確認しても
P_Rote㉑.jpg
無事に0に戻ってます。

???

float型なので0に見えて0ではないかも!
ログを取ってみます。

public void PushPiece(int a)
{
transform = PieceBt[a].GetComponent(); //ピースa番目のTransform情報を取得
float z = transform.localEulerAngles.z;           //Transformからローカル角度を取得

if (z == 0 || z == 90 || z == 180 || z == 270)
{
transform.DORotate(new Vector3(0f, 0f, z + 90f), 0.5f); //DOTweenで0.5秒かけて90°回転させる
}
Debug.Log(z);  //zの値を出力する
}

Debugコマンドを追加する事でConsoleに情報を出力することができます。
式は
Debug.Log(変数などを指定)

出てきた数値が!!
P_Rote㉒.jpg
なんじゃこりゃ(°°;)

こう言うのって何て言うんですかね?指数とか関数って言うですかね・・・
そらあんたz==0では反応せんわ。

どうしよう・・・


直接角度を指定する方法ならいいかも!

switchで各角度を判定して回転させる。
4つの移動メッソドを書くのは面倒ですが仕方がないですね。

で、書き始めたところ
P_Rote㉓.jpg
なんですと!float型変数はswitchの条件にできない・・・

お手上げでっす。(;^_^A

更に面倒ですが、if文で繋ぐしかないかと

public void PushPiece(int a)
{
transform = PieceBt[a].GetComponent(); //ピースa番目のTransform情報を取得
float z = transform.localEulerAngles.z;           //Transformからローカル角度を取得

if (z == 0)
{
transform.DORotate(new Vector3(0f, 0f, 90), 0.5f);
}else if (z == 90)
{
transform.DORotate(new Vector3(0f, 0f, 180), 0.5f);
}else if (z == 180)
{
transform.DORotate(new Vector3(0f, 0f, 270), 0.5f);
}else if (z == 270)
{
transform.DORotate(new Vector3(0f, 0f, 0), 0.5f);
}
Debug.Log(z);
}

もはや何が書いてあるか分からない (..*) オハズカシイ・・

早速これで動かします。

!!!
一回転で止まる~

やはり1.001791E-5でっす。
直接角度を入れてるのに~ (TOT) ダー

どうしよう・・・

少し頭を冷やして考え直してみます。

この記事へのコメント