ここから本文です

Unity C#に付いて簡単な質問です。

アバター

ID非公開さん

2019/5/2314:56:44

Unity C#に付いて簡単な質問です。

Aのオブジェクトをちょっといじった座標をBの座標に代入するプログラムとして
Vector3 v = go.transform.position;
Vector3 h = me.transform.position;
float cx = h.x + Mathf.Cos(radian) * 100;
float cy = h.y;
float cz = h.z + Mathf.Sin(radian) * 100;
Vector3 b = new Vector3(cx, cy, cz);
v = b;
goとmeはゲームオブジェクトで、ネットで調べつこのプログラムを作ったのですが全く動きません。間全部にDebug.Log()を挟んで確認しましたが最後まで実行はされているようですがエラーも出ないのに実行されません。単純なプログラムの割に原因が掴めないのでどうぞ御教授お願いします。

閲覧数:
13
回答数:
1
お礼:
100枚

違反報告

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

tot********さん

2019/5/2317:05:44

値型と参照型を勘違いしてるとか?

Vector3型は値型なので、変数vをどう変えようが go.transform.positionに影響はありません。
go.transform.positionを変更したいなら、変数vを削除して最後の行を
go.transform.position = b;でいけると思います。

  • アバター

    質問者

    ID非公開さん

    2019/5/2321:13:35

    その通りでした!ありがとうございます!

    追加で1つ質問なのですが、確かに代入はできたのですが、この単純なコードなのにうまくいきません。。。(詳細は下)
    そこで画面上の操作(Vector2)をゲーム内オブジェクトの動きに適応させる方法を知ってたら教えてもらえると嬉しいです。
    できないこともないけど荒ぶる(でも変換する前の角度は数字上取れている)というので困惑しています。

    このプログラムはスマホの画面上の操作(スライドなど)の角度を常(0.5秒置きくらい)に求めてその角度の方向にゲーム上のオブジェクトがx,z方向に移動するのですが、上記のプログラムのradian(実際は360度表記のDegreesでしたが)それをDebug.Log(radian)で表示すると安定して正しい角度を表示してくれるのですが、
    float cx = h.x + Mathf.Cos(degrees * Mathf.Deg2Rad) * 10;
    float cz = h.z + Mathf.Sin(degrees * Mathf.Deg2Rad) * 10;

  • その他の返信を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

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

2019/5/27 22:49:28

ありがとうございました。
助かりました(o_ _)o

あわせて知りたい

この質問につけられたタグ

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

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

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

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

閉じる

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

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

閉じる