Wpis z mikrobloga

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:

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 expected

I nic mi to jeszcze nie mówi, może ktoś na sali wie co naprawić?

#gamedev #unity #programowanie
  • 12
transform.position = new Vector2(Input.mousePosition.y, Input.mousePosition.x) * Time.deltaTime;

przestawiłem jeszcze tak, ale nadal porusza się tylko po jednej osi poziomej i frunie do góry jak zmieniam oś ruchu :/ .
@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)
Nie musi być w osobnych komponentach, ja bym zrobił coś w stylu:

void FixedUpdate()
{
Vector3 mouseWorldPosition = Input.mousePosition * cameraSpaceToWorldSpace;
transform.position = Vector3.MoveTowards(transform.position, mouseWorldPosition, maxSpeed * Time.fixedDeltaTime);
transform.LookAt(mouseWorldPosition);
}

(nie testowałem)
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.
True, rzeczy są zwykle prostsze jeżeli zapewniasz, że dla każdego obiektu na scenie position.y == 0 (co jest dobrym pomysłem anyway).