### 前提・実現したいこと
unity2Dでペグソリティアというパズルゲームを作っています。
ルールはペグは縦横2マス先に飛べて、間にペグがあれば飛び越えた後に飛び越えられたペグを
消していき、最後の一つになるまで繰り返すことができればクリア、というゲームを作っています。
発生している問題・エラーメッセージ
飛び越えられる、という判定はできていると思うが、飛び越えて消すことができない。
恥ずかしながら初めて作っているので、飛び越えられたペグを消す、というコードが書けず困っています。
皆様方の知恵を借りられれば嬉しいです。
{255,255,255,255,255,255,255,255,255,},
{255,255,255,1,1,1,255,255,255,},
{255,255,255,1,1,1,255,255,255},
{255,1,1,1,1,1,1,1,255},
{255,1,1,1,0,1,1,1,255},
{255,1,1,1,1,1,1,1,255},
{255,255,255,1,1,1,255,255,255},
{255,255,255,1,1,1,255,255,255},
{255,255,255,255,255,255,255,255,255}
このような形でボードを作っており、255が壁、1がペグ、0が空白です
アニメーションにしなくてもいいので、クリックすると縦横動ける場所を選べる、という処理にしたいです。(現れると消えるのみ)
エラーメッセージ
該当のソースコード
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class onclick : MonoBehaviour { 5 6 public GameObject base_obj; 7 public int x; 8 public int y; 9 10 public void OnClick() 11 { 12 Debug.Log (base_obj.GetComponent<gametask> ().field2 [x, y]); 13 if ( base_obj.GetComponent<gametask> ().field2 [x+1,y] == 1){ 14 Debug.Log ("x+1に1があった"); 15 if (base_obj.GetComponent<gametask> ().field2 [x + 2, y] == 0) { 16 Debug.Log ("x+2に0があった!移動できる!"); 17 } 18 } 19 if (base_obj.GetComponent<gametask> ().field2 [x,y+1] == 1) { 20 Debug.Log ("y+1に1があった"); 21 if (base_obj.GetComponent<gametask> ().field2 [x,y+2] == 0) { 22 Debug.Log ("y+2に0があった!移動できる!"); 23 //ここに動かすスクリプトを記述 24 } 25 } 26 if (base_obj.GetComponent<gametask> ().field2 [x-1,y] == 1) { 27 Debug.Log ("x-1に1があった"); 28 if (base_obj.GetComponent<gametask> ().field2 [x-2,y] == 0) { 29 Debug.Log ("x-2に0があった!移動できる!"); 30 //ここに動かすスクリプトを記述 31 } 32 } 33 if (base_obj.GetComponent<gametask> ().field2 [x,y-1] == 1) { 34 Debug.Log ("y-1に1があった"); 35 if (base_obj.GetComponent<gametask> ().field2 [x,y-2] == 0) { 36 Debug.Log ("y-2に0があった!移動できる!"); 37 //ここに動かすスクリプトを記述 38 } 39 } 40 } 41} 42``````ここに言語名を入力 43C# 44ソースコード 45 46### 試したこと 47Vector3 pos = this.gameObject.transform.position; 48 this.gameObject.transform.position = new Vector3 (pos.x + 2, pos.y, pos.z); 49このコードを入れると、オブジェクトが延々と右に動いていきます。if文で制御できていないのでしょうか? 50Destroyに関して 51 オブジェクトを消すというより状態を変更(1(ペグ)から0(空白))にしたいので消す必要はないと判断しました。 52アニメーションに関して 53 調べてきました。スライド移動や伸縮させたいわけではないので、アニメーションは追加しない方向でいきたいです。 54 55### 補足情報(FW/ツールのバージョンなど) 56 57unity 2017.3.1
回答1件
あなたの回答
tips
プレビュー