質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

2回答

5410閲覧

unityでオブジェクトを移動させたい

s1522001hs

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2016/12/15 04:49

編集2016/12/15 05:10

###前提・実現したいこと
unityで障害物を動かしたいのですがX軸を軸に動かすのではなく
今オブジェクトを置いているところを軸に往復でX軸方向にオブジェクトを動かしたいのですがどうしたらいいですか?
数値をいじってみたりしましたが変に動いてしまったのでわからなくなってしまいました
どなたかご教授お願いいたします

###該当のソースコード

bool m_xPlus = true; // x 軸プラス方向に移動中 // Use this for initialization void Start () { } // Update is called once per frame void Update () { if( m_xPlus ) { transform.position += new Vector3(2f*Time.deltaTime, 0f, 0f); if( transform.position.x >= 4 ) m_xPlus = false; } else { transform.position -= new Vector3(2f*Time.deltaTime, 0f, 0f); if( transform.position.x <= -4 ) m_xPlus = true; } }

###補足情報(言語/FW/ツール等のバージョンなど)
このソースコードは
http://vivi.dyndns.org/tech/cs/moveObject.html
からとってきました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2016/12/15 04:54

「変に動いてしまった」とは?
s1522001hs

2016/12/15 04:57

0fのところをいじったらY軸にオブジェクトが動いてしまいました。情報不足で申し訳ありません
ozwk

2016/12/15 05:02 編集

それは当たり前では? 質問文のソースコードそのままではどうなるんですか?
s1522001hs

2016/12/15 05:10

勉強不足で申し訳ございません。0fがY軸を示していることに気づいたのがこれなのです。unity関してそれくらい初心者なので大目にみてくれたら幸いです。このソースコードを解読できたら自分の実現したいことができると思ったので今回質問させていただきました
s1522001hs

2016/12/15 05:12

質問文のソースコードを実行するとX軸を中心にX軸方向に往復します
ozwk

2016/12/15 05:21

インスペクタで初期位置設定してもだめですか?
s1522001hs

2016/12/15 05:34

ありがとうございます。インスペクタについて調べさせていただきます
guest

回答2

0

ベストアンサー

if文の条件が絶対値だから0点を軸に左右4づつ動くんではないかと。
Start()でスタート位置(transform.position)を保存しておいて、そこからの相対座標で±4の移動を判定して左右に動かしたら、配置位置を起点に左右4づつ移動すると思いますよ。

そのまま修正するとしたらこんな感じ?(メモ帳で修正したのでミスタイプ等あるかもしれません)

bool m_xPlus = true; // x 軸プラス方向に移動中 Vector3 vecBasePos; // Use this for initialization void Start () { vecBasePos = transform.position; } // Update is called once per frame void Update () { if( m_xPlus ) { transform.position += new Vector3(2f*Time.deltaTime, 0f, 0f); if( transform.position.x - vecBasePos.x >= 4 ) m_xPlus = false; } else { transform.position -= new Vector3(2f*Time.deltaTime, 0f, 0f); if( transform.position.x - vecBasePos.x <= -4 ) m_xPlus = true; } }

投稿2016/12/15 05:38

編集2016/12/15 05:43
KougamiMakoto

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s1522001hs

2016/12/15 05:49

ありがとうございます!自分の実現したい通りに動きました!
KougamiMakoto

2016/12/15 05:53

よかったです。頑張ってくださいね。
s1522001hs

2016/12/15 06:26

解読して勉強させていただきます。お忙しい中回答ありがとうございました。
guest

0

ちょっと情報が少ないのでなんとも言えませんが、多分、カメラの位置がおかしいのでは?

初心者さんということで少し説明するとゲーム上のcameraというのは本当にテレビ撮影で使われるカメラと同じでゲームの描画ではあらゆる箇所で影響を与えます。
物体が東に動いても、カメラが北から撮影しているのか南から撮影しているのかで、左右どちらに動くかは当然違って見えます。カメラが東側に配置してあったら迫ってくるように見えるはずです。
(さらに言えばカメラそのものが回転していればさらに見え方は変わります)

というわけでまずはインスペクタ上にあるMainCameraのPositionを調べてみてください。

投稿2016/12/15 05:50

ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s1522001hs

2016/12/15 06:29

回答ありがとうございます カメラについてはゲームの都合上固定しております 情報が少なくて申し訳ございませんでした お忙しい中考えてくださり、ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問