UnluckyCalimero
Öğrenci
- Katılım
- 19 Nisan 2023
- Mesajlar
- 3
- Reaksiyon puanı
- 0
- Puanları
- 1
- Yaş
- 18
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Xml;
public class CameraManager : MonoBehaviour
{
private Vector3 k1Pozisyon, k2Pozisyon, k3Pozisyon, k4Pozisyon, k5Pozisyon, k6Pozisyon, k7Pozisyon, k8Pozisyon;
//Sorunlar
//> Kamerayı aşağıya doğrultup çok hızlı sağ-sol yapınca atlamalar oluyor
//> Kamerayı çok hızlı hareket ettirinice Z ekseni hafif oynuyor.
[Header("Sensitivity Settings")]
[Tooltip("Kameranın hassaslığını ayarlar.")]
[Range(0.1f, 9f)] [SerializeField] public float sensitivity = 2f;
[Header("Camera Settings")]
[Tooltip("Kameranın hareketini kitler.")]
[Range(1f, 10f)] [SerializeField] public bool CameraLocked = false;
[Tooltip("Kameranın yumuşak geçişinin hızını ayarlar.")]
[Range(1f, 10f)] [SerializeField] public float CameraSoftness = 1f;
[Tooltip("Kameranın Y eksenindeki maksimum limitini ayarlar.")]
[Range(0f, 100f)] [SerializeField] public float yMaxRotationLimit = 80f;
[Tooltip("Kameranın Y eksenindeki minimum limitini ayarlar.")]
[Range(0f, -100f)][SerializeField] public float yMinRotationLimit = -80f;
private new Camera camera;
private float rotAroundX, rotAroundY;
void Start()
{
//Başlangıçta kamera Componentını alır.
camera = this.GetComponent<Camera>();
//rotAroundX kameranın başlangıçtaki X ve Y sini alır.
//eulerAngles=Objenin rotasyon değerini elde etmemizi sağlar. İstersek bu değeri kod ile değiştirebiliriz.
rotAroundX = transform.eulerAngles.x;
rotAroundY = transform.eulerAngles.y;
//Mouse u ekranın ortasına kitleyip görünmez yapar.
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
if(!CameraLocked)
{
//Mousun X sini alır, hassaslıkla çarpar.
rotAroundX += Input.GetAxis("Mouse Y") * sensitivity;
//Mousun Y sini alır, hassaslıkla çarpar.
rotAroundY += Input.GetAxis("Mouse X") * sensitivity;
//Kameranın Y eksenini kısıtlar.
rotAroundX = Mathf.Clamp(rotAroundX, yMinRotationLimit, yMaxRotationLimit);
//Kameranın sıradaki rotasyonunu hesaplar.
Quaternion nextRotation = Quaternion.Euler(-rotAroundX, rotAroundY, 0);
//Kameranın hareketini yumuşatır.
camera.transform.rotation = Quaternion.Lerp(camera.transform.rotation, nextRotation, (CameraSoftness * 10) * Time.deltaTime);
}
if (true)
{
}
}
}
Unity de kamera kontrol gerektiren bir script yazıyorum fakat mouse`u sağ sola çok hızlı götürünce y ekseninde kaymalar oluyor. Kameranın yumuşak bir şekilde gitmesini istiyorum fakat bu yumuşaklığı yapınca da böyle bir sorun çıkıyor. Bunu nasıl çözebilirim?
Son düzenleme: