• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

unity3d kolizja kamery

VPS Starter Arubacloud
0 głosów
779 wizyt
pytanie zadane 8 października 2018 w OpenGL, Unity przez HitMan Użytkownik (850 p.)

Witam

Robię grę trzecioosobową i mam problem z kolizją kamery, rozwiązanie częściowo znalazłem:

using UnityEngine;
using System.Collections;


public class kamera : MonoBehaviour
{
    public float minDistance = 1.0f;
    public float maxDistance = 4.0f;
    public float smooth = 10.0f;
    Vector3 dollyDir;
    float distance;
    void Awake()
    {
        dollyDir = transform.localPosition.normalized;
        distance = transform.localPosition.magnitude;
    }
    void Update()
    {
        Vector3 desiredCameraPos = transform.parent.TransformPoint(dollyDir * maxDistance);
        RaycastHit hit;
        if (Physics.Linecast(transform.parent.position, desiredCameraPos, out hit))
        {
            distance = Mathf.Clamp(hit.distance, minDistance, maxDistance);
        }
        else
        {
            distance = maxDistance;
        }
        transform.localPosition = Vector3.Lerp(transform.localPosition, dollyDir * distance, Time.deltaTime * smooth);
    }
}

ale:

1) nie umiem dodać podnoszenia i opadania kamery(przesuwanie myszki góra, dół)

2)W trakcie chodzenia postacią do tyłu kamera zaczyna wariować(przysuwa się i oddala)

Hierarchia:Player->kamera,reszta

Jeżeli ktoś ma jakiś pomysł jak to naprawić, albo zupełnie nowy kod, jestem otwarty na propozycje.

1 odpowiedź

0 głosów
odpowiedź 27 października 2018 przez BlacKY Początkujący (350 p.)

Obracanie kamerą(Dodaj do update), a zmienną mouse sens tam gdzie masz resztę. .


public int MouseSens;

float mouseX=Input.GetAxis("MouseX") * MouseSens; //Jeśli nie chcesz mieć czułości to możesz wywalić tą zmienną
float mouseY=Input.GetAxis("MouseY") * MouseSens; //Jeśli nie chcesz mieć czułości to możesz wywalić tą zmienną
transform.Rotate(mouseX,mouseY,0F);//Jeśli kamera będzie ci uciekać w inne kierunki niż jest to założone to pozmieniaj kolejności zmiennych w Rotate

A jeśli chodzi o kolizję kamery to wystarczy, że dodasz pusty gameObject jako dziecko tej kamery, ustawisz odpowiedni rozmiar i dodasz kolizję

Podobne pytania

0 głosów
0 odpowiedzi 144 wizyt
pytanie zadane 11 lutego 2020 w OpenGL, Unity przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
0 odpowiedzi 939 wizyt
pytanie zadane 31 sierpnia 2018 w OpenGL, Unity przez NEFOS Początkujący (320 p.)
0 głosów
1 odpowiedź 319 wizyt
pytanie zadane 14 sierpnia 2018 w OpenGL, Unity przez BuxBleed Użytkownik (810 p.)

93,081 zapytań

142,045 odpowiedzi

321,464 komentarzy

62,427 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...