Mały problem techniczny


#1

Mam Mały problem techniczny. Mianowicie stworzyłem skrypt obracania się sfery i mam problem przedstawiony na profesjonalnym rysunku z painta. i potrzebuje pomocy przy naprawie tego.
Więc prosze o pomoc

A jakby ktoś nie zrozumiał to sfera kręci się razem z tym u góry a chciałbym żeby sfera kręciła się a kwadrat został na miejscu. Mam też problem z kolizją i fizyką tych przedmiotów.


#2

Skoro kwadrat jest podczepiony do sfery to jego rotacja jest zależna od rotacji rodzica. Wydaję mi się, że wystarczy przy zwiększaniu rotacji tej sfery zmniejszyć o tako samo wartość rotacje kostki. Wtedy to powinno się zredukować i nie będzie żadnego ruchu.


#3

Niestety nie działa.


#4

Pokaż kod, który napisałeś dla tego rotowania. I co dokładnie nie działa? Jak się obiekty zachowują?


#5
void Update () 
{

	Rigidbody rigidbody = transform.GetComponent<Rigidbody> ();

	Vector3 direction = Vector3.zero;

	if (Input.GetKey (KeyCode.D)) 
	{
		rigidbody.AddTorque (Vector3.right*20f);
	}

	if (Input.GetKey (KeyCode.A)) 
	{
		rigidbody.AddTorque (Vector3.left*20f);
	}

	if (Input.GetKey (KeyCode.W)) 
	{
		/////Tu się dorobi skok////
	}

	rigidbody.AddTorque (direction * 75f);

A obiekty zachowywały się tak że nic się nie zmieniło jak przekształciłem skrypt i dać na kostke jak dałem rigidbody i kolizie sferyczną to się w siebie wbiły a potem zadziałałą siła odśrodkowa i bardzo dziwnie to wyglądało. jak zacząłem to myślałem żeby sfera się kręciła a “Głowa” miała stać i ruszać się równo z sferą. Nie wyszło…


#6

I sfera rusza się prawo lewo skok Zablokowałem ruszanie się w osi X


#7

Nie wiedziałem, że działasz na siłach. Ale jeśli tak to A) Pomyśl czy nie możesz zrobić tak, że kostka będzie rodzicem, a sfera dzieckiem i wtedy będziesz mógł rotować samą sferę. B) Po prostu dodaj skrypt do tej kostki, który pobierze w metodzie start rotacje jej do zmiennej, a potem w funkcji Update będziesz rotację ustawiał przy użyciu tej zmiennej. Coś takiego transform.rotation = startingRotation;


#8

Nie radze sę z Unity. mógłbyś mi wytłumaczyć jak zrobić z childem i parentem?
Bo mam już dość robie to od 9 godzin. z góry dzięki.


#9

Mówisz o 1 sposobie? To mi chodziło o to, że sfera byłaby podczepiona do kostki, a nie na odwrót.


#10

Może jestem niedorozwój ale dalej kostka kręci się razem ze sferą


#11

zrob screen edytora - zobaczymy jak masz podpieta kostke.
Tylko zeby widac bylo co masz na zakladce “hierarchy”.

ps. na ktorym obiekcie masz ten skryp umieszczony?

Mam taka rade -> przerob sobie podstawowe tutoriale na stronie unity, bo jak sobie nie dajesz rady przez 9 godzin z taka rzecza to znaczy ze nie masz znajomosci nawet podstaw podstaw tego silnika.

Wogole dziwny ten skrypt.

1.sze nie szukaj rigidbody przy pomocy getcomponent<> za kazdym razem w update.
W tym skrypcie tworzysz nowy obiekt rigidbody, przypisujesz komponent , jak nacisniesz klawisz to dodajesz torque… a nastepnie niszczysz rigidbody… i to wysztko za kazdym razem w czasie update.
Do tego ta linia:
rigidbody.AddTorque (direction * 75f);

jak juz uzywasz fizyki to dawaj to w FixedUpdate();
komponent Rigidbody przypisz raz np w funkcji OnEnable();

p.s. czy dobrze mysle ze chcesz zrobic sobie toczaca sie kule + mozliwosc skakania nia?