_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); } }
できればエラーの内容を記述してもらうと回答しやすいと思いますので、コンソールに表示されているエラーの内容をコピペしてみてください。
CS1002 ;expectedやら他にトランスフォームを作って箱に入れたとしても同じ挙動をしてしまうとかです。
CS1002 の;はつけています
コンソールに表示されているエラー文を質問を編集して追記してください、全文丸々コピーで構いません。
エラーメッセージの中にはスクリプトのどの部分でエラーが発生しているかの情報もあるため、それがないと
一概にこれが原因とは言えません。
なるほど
こちらでは貼ってもらったスクリプトを実行しても特にコンパイルエラー・実行時エラーは出ませんでしたね……
もしスクリプトを書き換えていたらどのように書き換えたのかも教えてもらえると助かります
また、プログラムが自分の意図通りに動かないときは不具合を以下のように分類してみてください (あくまで一例です)
・スクリプトのコンパイルエラー
・ゲームの実行時エラー
・エラーは出ないが処理が思ったとおりに動かない (ロジックの記述が誤っている)
一口に「動かない」という場合でも色々な原因が考えられますので情報が増えれば解決できる可能性が上がります
分類ができない・わからないという場合はエラーメッセージをそのまま書いてもらうだけでも解決の糸口になることがあるので、エラーメッセージが出ている場合は、エラーメッセージをそのまま書いてもらえますか?
お手数ですがよろしくお願いします
_camTransformMove.transform.rotation = Quaternion.Euler(0,_camTransform.eulerAngles.y,0);
これを入力することでかいけつできまた!
本来は_camTransform.transform.TransformDirectionmの_camTransformを_camTransformMoveのゲームオブジェクトをつくらずに_camTransformの数値を変えることでしたかったのですが_camTransformMoveのオブジェクトを作ることで解決できました
回答1件
あなたの回答
tips
プレビュー