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

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

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

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

Unity3D

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

Q&A

解決済

1回答

883閲覧

Unity カメラ移動と同時にオブジェクト移動

meguru

総合スコア16

C#

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

Unity3D

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

0グッド

0クリップ

投稿2018/11/20 03:26

前提・実現したいこと

Unityでカメラ移動させたときに一緒にオブジェクトも移動させようとしています。
キーボードのCを奇数回押したら(100,100,100)に移動され、偶数回なら(0,0,0)に移動されるようにしたいです。

発生している問題・エラーメッセージ

3回以上押すと(100,100,100)や(0,0,0)ではなく、どんどん足されてしまいます。

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraController : MonoBehaviour { public Camera mainCamera; public Camera subCamera; // 「bool」は「true」か「false」の二択の情報を扱うことができます(ポイント) private bool mainCameraON = true; void Start() { mainCamera.enabled = true; subCamera.enabled = false; } void Update() { // (重要ポイント)「&&」は論理関係の「かつ」を意味する。 // 「A && B」は「A かつ B」(条件AとBの両方が揃った時という意味) // 「==」は「左右が等しい」という意味 // もしも「Cボタン」を押した時、「かつ」、「mainCameraON」のステータスが「true」の時(条件) if (Input.GetKeyDown(KeyCode.C) && mainCameraON == true) { mainCamera.enabled = false; subCamera.enabled = true; this.gameObject.transform.Translate(100,100,100); mainCameraON = false; // もしも「Cボタン」を押した時、「かつ」、「mainCameraON」のステータスが「false」の時(条件) } else if (Input.GetKeyDown(KeyCode.C) && mainCameraON == false) { mainCamera.enabled = true; subCamera.enabled = false; mainCameraON = true; this.gameObject.transform.Translate(0, 0, 0); } } }

試したこと

0をかけてから足してをだめでした

補足情報(FW/ツールのバージョンなど)

2018.2.15f

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

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

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

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

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

guest

回答1

0

ベストアンサー

Translate関数は特に指定しなかった場合はローカル座標を元に移動させるため
Translate(0, 0, 0) を指定してもローカル座標から0, 0, 0の位置に移動となるため実質移動量は0になってしまいます。
逆にTranslate(100, 100, 100)は毎回ローカル座標を元に100, 100, 100の位置の為どんどん移動してしまいます。
Translate関数の第2引数にSpace.Worldを指定することでワールド座標を元に移動をしてくれます

csharp

1this.gameObject.transform.Translate(100, 100, 100, Space.World); 2this.gameObject.transform.Translate(0, 0, 0, Space.World);

投稿2018/11/20 05:23

MMashiro

総合スコア2378

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問