Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2020-06-04, 17:44


Szyszka947

ASP NET Core / Lua






Wiek: 19
Na forum: 2579 dni
Posty: 288

Piwa: 16

Respekt: 90

Witam. Postanowi?em wykona? kamer? w sterowaniu podobn? do gta sa, a mo?e i tak? sam?. No, i prawie si? uda?o. Dlaczego, mimo, ?e nigdzie nie zmieniam osi Z, to ona si? zmienia? Ca?o?? polega na tym, ?e w brzuchu modelu ustawi?em klocek, kt?ry przy pomocy myszki si? obraca, a kamera zawsze wskazuje na ten klocek. Oto kod odpowiedzialny za rotacj? klocka (chc?, aby nie zmienia?a si? o? Z)
Kod:


using UnityEngine;

public class CameraController : MonoBehaviour
{
public float mouseSensitivity = 0.8f;
private void Update()
{
if ((Input.GetAxis("Mouse X") * mouseSensitivity) < 0)
{
transform.Rotate(0, -mouseSensitivity, 0);
}
else if ((Input.GetAxis("Mouse X") * mouseSensitivity) > 0)
{
transform.Rotate(0, mouseSensitivity, 0);
}
if ((Input.GetAxis("Mouse Y") * mouseSensitivity) < 0)
{
transform.Rotate(mouseSensitivity, 0, 0);
}
else if ((Input.GetAxis("Mouse Y") * mouseSensitivity) > 0)
{
transform.Rotate(-mouseSensitivity, 0, 0);
}
}
}


[ Dodano: 2020-06-05, 18:42 ]
Pogrzeba?em troch? na zagranicznych forach i dowiedzia?em si?, ?e istnieje funkcja odpowiedzialna za pobranie rotacji obiektu. Oto rozwi?zanie:
Kod:


using UnityEngine;

public class CameraController : MonoBehaviour
{
public float mouseSensitivity = 0.8f;
private void Update()
{
if ((Input.GetAxis("Mouse X") * mouseSensitivity) < 0)
{
transform.Rotate(0, -mouseSensitivity, 0);
}
else if ((Input.GetAxis("Mouse X") * mouseSensitivity) > 0)
{
transform.Rotate(0, mouseSensitivity, 0);
}

if ((Input.GetAxis("Mouse Y") * mouseSensitivity) < 0)
{
transform.Rotate(mouseSensitivity, 0, 0);
}
else if ((Input.GetAxis("Mouse Y") * mouseSensitivity) > 0)
{
transform.Rotate(-mouseSensitivity, 0, 0);
}
transform.rotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, 0);
}
}

Do zamkni?cia.

[ Dodano: 2020-06-06, 20:11 ]
Mo?e jeszcze tylko dodam, ?e kod uda?o mi si? znacznie skr?ci?, i przy okazji uda?o mi si? te? unikn?? buga.
Kod:


using UnityEngine;

public class CameraController : MonoBehaviour
{
public float mouseSensitivity = 3.0f;
float mouseTopDown;
float mouseLeftRight;
private void Update()
{
mouseLeftRight += Input.GetAxis("Mouse X") * mouseSensitivity;
mouseTopDown -= Input.GetAxis("Mouse Y") * mouseSensitivity;
mouseTopDown = Mathf.Clamp(mouseTopDown, -45, 75);
transform.localRotation = Quaternion.Euler(mouseTopDown, mouseLeftRight, 0);
}
}


Postaw piwo autorowi tego posta
 

 
Tagi: unity :: kamera
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » INNE JĘZYKI » [C#] Unity kamera Odpowiedz do tematu

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku