現状のカメラ追従コードはどうなっていますでしょうか?
たとえばもし下記のようにターゲットにぴったり追従させているとしたら、確かにカメラの動きが激しくなりすぎるかもしれません。
lang
1using UnityEngine;
2
3[RequireComponent(typeof(Camera))]
4public class CameraController : MonoBehaviour
5{
6 [SerializeField] private Transform target;
7 private float cameraZ;
8
9 private void Start()
10 {
11 this.cameraZ = this.transform.position.z;
12 }
13
14 private void LateUpdate()
15 {
16 var position = this.target.position;
17 position.z = this.cameraZ;
18 this.transform.position = position;
19 }
20}
これを、たとえば下記のように追従具合を穏やかにしてやれば、いくらか落ち着くんじゃないかと思います。
lang
1using UnityEngine;
2
3[RequireComponent(typeof(Camera))]
4public class CameraController : MonoBehaviour
5{
6 [SerializeField] private Transform target;
7 [SerializeField][Range(0.0f, 5.0f)] private float smoothTime = 1.0f;
8 private float cameraZ;
9 private Vector2 velocity;
10
11 private void Start()
12 {
13 this.cameraZ = this.transform.position.z;
14 }
15
16 private void LateUpdate()
17 {
18 var currentPosition = (Vector2)this.transform.position;
19 var destination = (Vector2)this.target.position;
20 var position = Vector2.SmoothDamp(currentPosition, destination, ref this.velocity, this.smoothTime);
21 this.transform.position = new Vector3(position.x, position.y, this.cameraZ);
22 }
23}
あるいはCinemachineを使ってみるのもいいかと思います。設定項目が多くてとっつきにくいかもしれませんが、たとえば中央にデッドゾーンを設けて...
中央付近でボールを動かしてもカメラは動かず、画面端に近づくとスクロールする...みたいな挙動も作りやすいでしょう。
Cinemachineについては比較的使用例が見つかりやすいだろうとは思いますが、特に今回のような2Dプロジェクトの場合は、検索キーワードを「Cinemachine 2D」とでもした方がいいかもしれませんね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/18 07:30
2021/11/18 21:38
2021/11/19 05:00
2021/11/19 18:32
2021/11/22 06:16
2021/11/22 06:56
2021/11/22 10:48
2021/11/22 11:34
2021/11/22 11:43
2021/11/22 11:59
2021/11/22 12:02
2021/11/22 12:13
2021/11/23 02:41 編集