Камерата пада през земята

ghostbob 15 ноември 2013 г. 10:50 ч

Не удряйте силно, но вече седмица не мога да разбера как да го направя. Научих за Unity преди 2 седмици. Не намерих конкретни примери в буржоазните сайтове.

Задача: изградете пейзаж въз основа на реални данни и позволете на потребителя просто да лети над пейзажа (приближавайки земята и отдалечавайки се до изглед от птичи поглед, за да заснемете цялото парче).

Прехвърлих пейзажа 5x5 км от Макс през obj (Obj2Terrain), иначе не се получи чрез карти на височината - земята излезе върху цялата повърхност като шипове (видях примери тук във форума, но не се получи).

Добавих камера, добавих колайдер към нея, земята също има колайдер. Прикачих скрипта към камерата. Но има проблеми - на моменти камерата се проваля - ако камерата се движи, докато е близо до земята, изглежда, че скача през цялото време, докато не се отдалечите по-високо или не се повреди напълно

Въпроси: - какво не е наред (може би не разбирам напълно как да използвам Raycast и Vector3 на практика) - как трябва да е правилно

Код за камера MouseLook и моята собствена:

void Update() < float vert = Вход. GetAxis("Вертикално"); float hor = Вход. GetAxis("Хоризонтално");

if ( ! Physics. Raycast ( this . transform . position , this . transform . forward , 5 ) ) < трансформиране. Превод ( Vector3. forward * flySpeed ​​​​* vert ); > друго < трансформиране. Превод ( Vector3. up * flySpeed ​​​​* vert ); > >

if ( ! Physics. Raycast ( this . transform . position , this . transform . forward , 5 ) ) < трансформиране. Превод ( Vector3. right * flySpeed ​​​​* hor ); > друго < трансформиране. Превод ( Vector3. up * flySpeed ​​​​* hor ); > > ако( Input. GetKey ( KeyCode. E ) ) < трансформиране. Translate( Vector3. up * flySpeed ​​​​); > друго ако ( Input. GetKey ( KeyCode. Q ) ) < Вектор3 v = Вектор3. надолу * flySpeed ​​​​;

if ( ! Physics. Raycast ( this . transform . position , this . transform . forward , 5 ) ) < трансформиране. превеждам (v); > >