Mam problem z utrzymywaniem obiektów gry w zamkniętym obszarze. Kiedy dotrą do krawędzi, nastąpi chwilowe odepchnięcie, ale potem przejdą przez ścianę.Jak zapobiegać przechodzeniu przez siebie zderzaków?
Używam Zderzaka Pudełek na odtwarzaczu i Zderzaka Siatek dla ściany poziomu. Mam problemy zarówno z postacią gracza (statkiem kosmicznym), którą ruch kontroluje gracz. I za pomocą pocisków, które są ogniami i zapominają poruszać się ze stałą prędkością.
To jest mój kod ruchu dla mojego odtwarzacza. Jest uruchamiany w funkcji FixedUpdate()
.
//Movement
haxis = Input.GetAxis("Horizontal") * speed;
vaxis = Input.GetAxis("Vertical") * speed;
moveVector.x = haxis;
moveVector.z = vaxis;
if(moveVector.magnitude > 1)
{
moveVector.Normalize();
}
rigidbody.MovePosition(transform.position + moveVector * speed);
Za pomocą pocisków, otrzymują prędkość, a silnik oblicza ich filmy. Używają one Box Collider i jest ustawiony jako Trigger, więc nie mają fizyki. Ale używam OnTriggerEnter
, aby je zniszczyć.
//Projectiles without physics collisiions
function OnTriggerEnter (other : Collider) {
Destroy(gameObject);
}
Niektóre, ale nie wszystkie pociski zostaną zniszczone po uderzeniu w ścianę zderzacza siatki. Gracz czasami uderzy go i przestanie, ale zwykle może go przepchnąć. Jak za każdym razem można wykonać kolizje za pomocą narzędzia do sprawdzania siatki?
Stworzyłem nawet prostszy zderzacz siatki z siatki ściany i to nie pomogło. – Chris
Jak szerokie są zderzacze siatki używane na ekranie i jak szybko mogą pocisk i gracz podróżować? Jeśli pociski lub gracz mogą przesunąć odległość dłuższą niż zderzak w jednej klatce, masz ją. Poza tym unikałbym ręcznego przenoszenia sztywnego nadwozia. To tylko pomyli silnik fizyki i uniemożliwi jej optymalizację. Zamiast tego przenieś transformację obiektu gry. – Elideb
@Elideb Zderzacze mają około 8 znaków i 20 pocisków. Nie przemieszczają się całkowicie przez zderzak w pojedynczej ramce. Jeśli przeniesiesz transformację, Unity zignoruje całą fizykę, rigidbody.MovePosition bierze pod uwagę fizykę. – Chris