ここから本文です

Unityに関しての質問です。

eva********さん

2016/4/1022:59:18

Unityに関しての質問です。

サイコロを振って、キャラクターを動かすプログラムを書いているのですが

キャラクターにつけたスクリプトの変数(移動値)を呼び出した場合、
その変数だけではなく、キャラクターを移動するメソッドの処理まで呼び出して
サイコロも移動してしまいます。

サイコロに付けた変数を呼び出す方のcs(Dice2)

void Start () {
cm = GameObject.Find("Cat_Warrior");

but = GameObject.Find("d6");
}

// Update is called once per frame
void Update () {
chm = cm.gameObject.GetComponent<Charmove>();
if(this.dice2==null){
this.dice2 = this.gameObject.GetComponent<Dice2> ();//null kaihi
}
if(this.dice2 != null){
this.dice2.Dicestart ();
}
}
.
.
.
.
.
if(clickCount>=3 && chm.end==true){//初期化(変数endを呼び出し)
this.transform.position = new Vector3 (0, 5, 5);
Physics.gravity = new Vector3(0, 0, 0);
clickCount = 0;
can = false;
action = false;
Debug.Log ("tootesimawaretaaaaaaaaa");
}

.
.
.
.

移動キャラクターにつけた呼び出される方のcs(Charmove)
public void MoveMain(){ // サイコロの出た目の数だけ進む

if (lastResult > 0 && timer < 0.0f) {

Debug.Log (lastResult);
if (Input.GetKeyUp (KeyCode.W)) {
this.transform.position += new Vector3 (0, 0, 1);
lastResult--;
timer = marginTime;
} else if (Input.GetKeyUp (KeyCode.S)) {
this.transform.position += new Vector3 (0, 0, -1);
lastResult--;
timer = marginTime;
} else if (Input.GetKeyUp (KeyCode.A)) {
this.transform.position += new Vector3 (-1, 0, 0);
lastResult--;
timer = marginTime;
} else if (Input.GetKeyUp (KeyCode.D)) {
this.transform.position += new Vector3 (1, 0, 0);
lastResult--;
timer = marginTime;
}
tj = true;

} else if (timer > 0.0f) {
timer -= Time.deltaTime;
}

if (tj) {
if (lastResult == 0) {
end = true;(呼び出される変数)
}
}



Char moveのthis.transform.positionは呼び出さず、変数endのみを
呼び出すことはできますか

分かりづらくて申し訳御座いませんが
よろしければよろしくお願いいたします。

閲覧数:
121
回答数:
1

違反報告

ベストアンサーに選ばれた回答

dea********さん

2016/4/1116:52:27

通常、変数を操作しただけではメソッドは呼ばれません。
つまり変数endを変更しようが参照しようが、メソッドMoveMainは呼ばれません。
なのに連動してしまっているということは、MoveMainがどこかで呼ばれっぱなしになっています。

なので直すとすれば、
・キャラクターが動くべき時だけMoveMainを呼ぶようにする
・MoveMainの中で、キャラクターが動くべき時だけthis.transform.positionを変更するようにする
のどちらかになります。
(どちらにするかはお好みでどうぞ)

質問した人からのコメント

2016/4/12 00:52:59

ありがとうございます、
原因がわかりとても助かりました。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる