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

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

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

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

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

5196閲覧

[Unity]スワイプでカメラを移動したいが参考コードでエラーが出る

Yuki_Unity

総合スコア129

C#

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

Unity3D

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2018/03/22 06:18

編集2018/03/22 06:18

こちらのブログ(クリアメモリ)に書かれているコードを試したのですが、エラーが起きます。

###コード

C#

1using UnityEngine; 2using System.Collections; 3 4public class Swipe : MonoBehaviour { 5 6 public float StartPos; 7 public float EndPos; 8 9 public Camera mainCamera; 10 11 void Update () { 12 13 if (Input.GetMouseButtonDown (0)) { 14 StartPos = mainCamera.ScreenToWorldPoint (Input.mousePosition).x; 15 } 16 if (Input.GetMouseButtonUp (0)) { 17 EndPos = mainCamera.ScreenToWorldPoint (Input.mousePosition).x; 18 if (StartPos > EndPos) { 19 mainCamera.transform.position = new Vector3 (main.transform.position.x + 10, main.transform.position.y, -10); 20 }else if (StartPos < EndPos) { 21 mainCamera.transform.position = new Vector3 (main.transform.position.x - 10, main.transform.position.y, -10); 22 } 23 StartPos = 0; 24 EndPos = 0; 25 } 26 } 27}

↑こちらです。

void Start() { mainCamera = GameObject.Find ("MainCamera").GetComponent (); }

を削除して

c#

1Camera mainCamera


publicにして、Main Cameraオブジェクトをドラッグしました。

###エラーコード

現在のコンテキストに'main'という名前は存在しません。

このように、mainという文字がコード内にありますが、定義されていません。
ブログの方にも聞こうかと思いましたが、2年も前の記事ですし、teratailにて質問することにしました。

このmainというのは、何なのでしょうか。どなたか回答お願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

参考にしているスクリプトが間違っているように思えます。
適当ですがこんな感じでどうでしょうか。

csharp

1using UnityEngine; 2using System.Collections; 3 4public class Swipe : MonoBehaviour { 5 public Vector3 start; 6 public Vector3 end; 7 public float deltaX = 0f; 8 public Camera mainCamera; 9 10 void Update () { 11 if (Input.GetMouseButtonDown (0)) { 12 start = Input.mousePosition; 13 } 14 if (Input.GetMouseButtonUp (0)) { 15 end = Input.mousePosition; 16 deltaX = (start - end).x; 17 } 18 mainCamera.transform.Translate (deltaX * Time.deltaTime, 0f, 0f); 19 deltaX *= 0.9f; 20 } 21}

投稿2018/03/22 06:55

編集2018/03/22 07:33
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Yuki_Unity

2018/03/22 07:06

回答有り難うございます! 押した時の実行を数フレームごとに処理することは可能でしょうか。 例えば、スワイプしている間にも画面の移動がしたいのです。
退会済みユーザー

退会済みユーザー

2018/03/22 07:32

簡易的なアニメーションができるようにスクリプトを変更してみました。
guest

0

単純にmainCameraの誤記だと思います。

csharp

1mainCamera.transform.position = new Vector3 (mainCamera.transform.position.x + 10, mainCamera.transform.position.y, -10);

mainCamera.transform.positionのx座標を現在のpositionから10ずつ動かしたいってことだと思います。

投稿2018/03/22 06:24

sh_akira

総合スコア380

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

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

Yuki_Unity

2018/03/22 06:35

回答有り難うございます! しかし、画面スワイプしても動かないのですがどこに問題があるのですかね。 EndPosの数値が押しても離しても常に0なんです。
sh_akira

2018/03/22 06:47

問題があるとするならあなた自身で変更した mainCamera = GameObject.Find ("MainCamera").GetComponent (); を削除して、その後mainCameraに何を割り当てたか分からないところじゃないですかね
Yuki_Unity

2018/03/22 06:49

返信有難うございます。 Main Cameraを割り当てました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問