やりたいこと
フリーである既存の3rdPersonのカメラ制御のスクリプトに
マウススクロールによるズーム機能を追加で付けたい。
やったこと
1.ズームできるスクリプトを追加で加えてみた。
カメラのトランスフォームのZを変えるやり方だと
単独では機能したけれど
既存のスクリプト制御されたカメラ位置には反映されなかった。
2.FOVの値を変えるスクリプトを追加してみた。
インアウトする感じにはなるけれど、
トランスフォームではなく画角が変わってるだけなので
ちょっとイメージと違う。最大値と最小値をつけれれば使えなくもない。
3.getcompornentでCamOffsetの値をとって
そこをマウススクロールで変えてみる。スクリプトを空のオブジェクトにつけてみた。機能しなかった。
知りたいこと
もとのプログラムのどのへんにアクセスすればズーム機能をつけられそうかを知りたい。
どのようなスクリプトを追加すればこの場合のカメラの位置がマウスで可変できるようになるかを知りたい。
やってみた1のスクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraZoom : MonoBehaviour
{
private float scroll; public float speed = 1f; void Update() { scroll = Input.GetAxis("Mouse ScrollWheel"); Camera.main.transform.position += transform.forward * scroll * speed; }
}
--- やってみた2のスクリプト ```ここに言語を入力 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFOV : MonoBehaviour { float zoom; float tan0; void Start() { tan0 = Mathf.Tan(Camera.main.fieldOfView * 0.5f / 180 * Mathf.PI); zoom = 0; } void Update() { Camera.main.fieldOfView = Mathf.Atan(tan0 / Mathf.Exp(-zoom)) * 180 / Mathf.PI * 2; zoom -= Input.mouseScrollDelta.y; } }
CamOffsetの値をGetComponentしてみる。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class getcamoffset : MonoBehaviour { public GameObject gameobject; private float scroll; public float speed = 1f; void Update() { Vector3 CamOffset = gameobject.GetComponent<ThirdPersonOrbitCamBasic>().camOffset; Debug.Log(CamOffset); scroll = Input.GetAxis("Mouse ScrollWheel"); CamOffset = Vector3.forward * scroll * speed; } }
Unityバージョン2019.2.9f1
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー