Bawiąc się skryptami znalazłem mały bajer lookatmouse - szybko go przerobiłem, a że jeszcze dużo nauki przede mną, posiłkowałem się youtubem, dokumentacją i czym tylko się da - teraz chce żeby mój box będący postacią, oprócz obracania się facjatą w stronę myszki, także powoli do niej podszedł, potem mogę do "przemieszczania się" podpiąć animację, o ile będę mógł tak jak planuję. Wpisałem coś takiego:
@rzezol: faktycznie dało radę.. ale muszę jeszcze pokombinować, bo teraz cholera zamiast poruszać się po osi x i y na ziemi, to on porusza się po x i fruwa do góry :/ .
@Rett: Teraz doszedłem do tego momentu z większości tutków na youtube, postać się nie obraca, za to jakby przyczepiona do kursora na kij od szczotki :/ . Czym by tutaj gifa zrobić :/ .
Dobra, przeczytałem OP dokładniej :) Teraz robisz tak, że co klatkę nadpisujesz pozycję postaci, zupełnie ignorując dotychczasową pozycję. To co chcesz zrobić uzyskasz przez: odczytanie poprzedniej pozycji, odczytanie pozycji myszy, znalezienie wektora (poprzednia pozycja + przesunięcie w stronę myszy ograniczone maksymalną szybkością) (hint: Unity ma to wbudowane). Rotację musisz robić osobno (hint)
tak ogolnie z taką myszką daleko nie zajdziesz. powinieneś robić raycasta z podłożem, z atana (lookat pierdyknie jeżeli nie zapewnisz że obiekt i cel są na tej samej powierzchni) wyliczyć obrót dla jednej osi, obrócić, i przesunąć do przodu o prędkość razy delta czasu.
Ostatnio wsiąkłem w temat zarówno UFO jak i UAP i mam do was całkowicie poważne pytanie, mieliście w swoim życiu jakieś doświadczenia z potencjalnymi obiektami pochodzenia pozaziemskiego? #ufo #uap
transform.position = Vector3(Input.mousePosition.x, Input.mousePosition.y, 0,5) * Time.deltaTime;
Na samym końcu, i wypadł mi error:
error CS0119: Expression denotes a
type', where a
variable',value' or
method group' was expectedI nic mi to jeszcze nie mówi, może ktoś na sali wie co naprawić?
#gamedev #unity #programowanie
@MichaelP: Czyżby przecinek?
this.transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0.5f) *Time.deltaTime;
tak powinno być :)
przestawiłem jeszcze tak, ale nadal porusza się tylko po jednej osi poziomej i frunie do góry jak zmieniam oś ruchu :/ .
Komentarz usunięty przez autora
Wstawiłem gifa i nie wygląda to za ciekawie :/ .
Teraz robisz tak, że co klatkę nadpisujesz pozycję postaci, zupełnie ignorując dotychczasową pozycję.
To co chcesz zrobić uzyskasz przez: odczytanie poprzedniej pozycji, odczytanie pozycji myszy, znalezienie wektora (poprzednia pozycja + przesunięcie w stronę myszy ograniczone maksymalną szybkością) (hint: Unity ma to wbudowane).
Rotację musisz robić osobno (hint)
Nawiasem
https://www.youtube.com/watch?v=uv2QSvuwIDs
Znalazłem live training, może komuś się przyda :> .
void FixedUpdate()
{
Vector3 mouseWorldPosition = Input.mousePosition * cameraSpaceToWorldSpace;
transform.position = Vector3.MoveTowards(transform.position, mouseWorldPosition, maxSpeed * Time.fixedDeltaTime);
transform.LookAt(mouseWorldPosition);
}
(nie testowałem)