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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

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

Q&A

解決済

1回答

1326閲覧

宙に浮かないようにしたいです

manmanJ

総合スコア19

Unity

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

0グッド

0クリップ

投稿2020/03/03 11:29

_camTransform.transform.TransformDirectionの_camTransformを変更して宙に浮かなくするのはわかりますが
Vector3やQuaternion.Eulerで.transform.TransformDirectionの前においてもどうしてもエラーがでてしまい前に進めません
よかったらおしえてください

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlaCon : MonoBehaviour { private Vector3 latestPos; private float h,v,eulerY,eulerX; private Vector3 _startMousePos; public Transform _camTransform; public Vector3 _camTransformMove; // Start is called before the first frame update void Start() { _camTransform = Camera.main.gameObject.transform.parent.gameObject.transform; _startMousePos = Input.mousePosition; } // Update is called once per frame void Update() { h = Input.GetAxis ("Horizontal"); //左右矢印キーの値(-1.0~1.0) v = Input.GetAxis ("Vertical"); //上下矢印キーの値(-1.0~1.0) _camTransform.transform.rotation=Quaternion.Euler(-eulerX,eulerY,_camTransform.eulerAngles.z); transform.position +=_camTransform.transform.TransformDirection(new Vector3 (h, 0, v)); Vector3 diff = new Vector3 (transform.position.x,0,transform.position.z) - latestPos; //前回からどこに進んだかをベクトルで取得 latestPos = new Vector3 (transform.position.x,0,transform.position.z); //前回のPositionの更新 if (diff.magnitude > 0.01f) { transform.rotation = Quaternion.LookRotation(diff); //向きを変更する } CameraRotationMouseControl(); } private void CameraRotationMouseControl() { //(移動開始座標 - マウスの現在座標) / 解像度 で正規化 float x = (_startMousePos.x - Input.mousePosition.x) / Screen.width; float y = (_startMousePos.y - Input.mousePosition.y) / Screen.height; if(eulerX>=30f) {eulerX=30f;} if(eulerX<=-30f) {eulerX=-30f;} if(eulerX<=30f&&y>=-30f){ eulerX += Input.GetAxis ("RV")*100* Time.deltaTime; } eulerY += Input.GetAxis ("RH")*100* Time.deltaTime; //_camTransform.rotation = Quaternion.Euler(-eulerX, eulerY, 0); } }

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

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

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

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

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

kawa0x0A

2020/03/03 14:41

できればエラーの内容を記述してもらうと回答しやすいと思いますので、コンソールに表示されているエラーの内容をコピペしてみてください。
manmanJ

2020/03/03 23:18

CS1002 ;expectedやら他にトランスフォームを作って箱に入れたとしても同じ挙動をしてしまうとかです。 CS1002 の;はつけています
Y0241-N

2020/03/04 00:03

コンソールに表示されているエラー文を質問を編集して追記してください、全文丸々コピーで構いません。 エラーメッセージの中にはスクリプトのどの部分でエラーが発生しているかの情報もあるため、それがないと 一概にこれが原因とは言えません。
kawa0x0A

2020/03/04 00:26

なるほど こちらでは貼ってもらったスクリプトを実行しても特にコンパイルエラー・実行時エラーは出ませんでしたね…… もしスクリプトを書き換えていたらどのように書き換えたのかも教えてもらえると助かります また、プログラムが自分の意図通りに動かないときは不具合を以下のように分類してみてください (あくまで一例です) ・スクリプトのコンパイルエラー ・ゲームの実行時エラー ・エラーは出ないが処理が思ったとおりに動かない (ロジックの記述が誤っている) 一口に「動かない」という場合でも色々な原因が考えられますので情報が増えれば解決できる可能性が上がります 分類ができない・わからないという場合はエラーメッセージをそのまま書いてもらうだけでも解決の糸口になることがあるので、エラーメッセージが出ている場合は、エラーメッセージをそのまま書いてもらえますか? お手数ですがよろしくお願いします
manmanJ

2020/03/04 00:44

_camTransformMove.transform.rotation = Quaternion.Euler(0,_camTransform.eulerAngles.y,0); これを入力することでかいけつできまた! 本来は_camTransform.transform.TransformDirectionmの_camTransformを_camTransformMoveのゲームオブジェクトをつくらずに_camTransformの数値を変えることでしたかったのですが_camTransformMoveのオブジェクトを作ることで解決できました
guest

回答1

0

自己解決

_camTransformMove.transform.rotation = Quaternion.Euler(0,_camTransform.eulerAngles.y,0);

これを入力することでかいけつできまた!
本来は_camTransform.transform.TransformDirectionmの_camTransformを_camTransformMoveのゲームオブジェクトをつくらずに_camTransformの数値を変えることでしたかったのですが_camTransformMoveのオブジェクトを作ることで解決できました

投稿2020/03/04 00:45

manmanJ

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問