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

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

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

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

Unity

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

Q&A

解決済

1回答

849閲覧

Unity 2D マウスポインターの位置にオブジェクトの座標を揃えたい

ssssggg

総合スコア40

C#

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

Unity

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

0グッド

0クリップ

投稿2019/05/19 04:36

編集2019/05/19 07:52

Unityについてです。
http://negi-lab.blog.jp/MouseFollow2D
このサイトを元に、マウスポインターの位置にオブジェクトの座標を揃えるスクリプトを作りたいのですが、下記のコードのMainの部分にエラーが出ます。どうすればいいでしょうか。

Mainのエラー文は、CameraにMainの定義が含まれていませんというものです。

追記

(エラー文)

'Camera' does not contain a definition for main

コード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class Pointer : MonoBehaviour { // X, Y座標の移動可能範囲 [System.Serializable] public class Bounds { public float xMin, xMax, yMin, yMax; } [SerializeField] Bounds bounds; // 補間の強さ(0f~1f) 。0なら追従しない。1なら遅れなしに追従する。 [SerializeField, Range(0f, 1f)] private float followStrength; private void Update() { // マウス位置をスクリーン座標からワールド座標に変換する var targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); // X, Y座標の範囲を制限する targetPos.x = Mathf.Clamp(targetPos.x, bounds.xMin, bounds.xMax); targetPos.y = Mathf.Clamp(targetPos.y, bounds.yMin, bounds.yMax); // Z座標を修正する targetPos.z = 0f; // このスクリプトがアタッチされたゲームオブジェクトを、マウス位置に線形補間で追従させる transform.position = Vector3.Lerp(transform.position, targetPos, followStrength); } }

このスクリプトがアタッチされているのは、マウスにポインターを揃える対象のオブジェクトです。
シーン上のMain Cameraには、MainCameraのタグが付いています。

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

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

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

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

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

ku__ra__ge

2019/05/19 05:58

発生しているエラーメッセージを追記してください。
ssssggg

2019/05/19 07:48

指摘ありがとうございます。追加しておきます。
guest

回答1

0

ベストアンサー

プロジェクト内にCameraという名前のクラス(スクリプト)を自前で定義している場合、Unityに予め用意されているCameraクラスではなく自前で定義したCameraクラスの方が優先して参照されるため、提示されたようなエラーが発生します。
その場合、Cameraクラスを別の名前に変更する、またはUnityEngine.Cameraのように明示的にUnityのCameraクラスを指定することでエラーが解消します。

C#

1 // マウス位置をスクリーン座標からワールド座標に変換する 2 var targetPos = UnityEngine.Camera.main.ScreenToWorldPoint(Input.mousePosition);

投稿2019/05/19 08:07

編集2019/05/19 08:52
ku__ra__ge

総合スコア4524

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

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

ssssggg

2019/05/19 08:43

回答ありがとうございます。 ですが、すみません。どこをどう変えればいいのか初心者の僕にはよくわからなかったので、書き換えた後のスクリプトの提示をお願いします。
ssssggg

2019/05/19 09:22

エラーはなくなりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問