Skocz do zawartości

Unity3d


Ardeni

Rekomendowane odpowiedzi

  • Odpowiedzi 595
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

nie wiem czemu piszecie o cle - Unity Technologies zarejestrowane jest w Unii Europejskiej (Dania) a zakup licencji to tzw transakcja wewnątrzwspólnotowa - nie płacisz euro Vatu 25% ale też nie możesz odliczyć od Vatu później

 

nie ma mowy o żadnym cle

 

jak poprosicie to dostaniecie fakturę w formie pisemnej i w formie skanu, ale i tak będziecie musieli wystawić tzw fakturę wewnętrzną

Odnośnik do komentarza
Udostępnij na innych stronach

Gość Chrupek3D

Czy posiadając wersje Unity na Mac'a i chcąc robić gry na Androida, muszę kupić wersje Androidowa na Mac'a - o ile jest taka wersja? (juz wiem, ze jest)

Planuje kupić Mac'a i zastanawiam sie jak to jest z wypuszczaniem gier na Androida spod Mac'a.

Orientuje sie ktos w temacie?

Edytowane przez Chrupek3D
Odnośnik do komentarza
Udostępnij na innych stronach

Chrupek3D: Zainstaluj na Mac'u także widnowsa i po sprawie:] nawet jak będziesz miał licencje na PRO to możesz zainstalować i na OSX i WIN gdyż to jedno stanowisko. Oczywiście to się wiąże z cena Widnowsa. A konkretnie to osobiście nie pomogę w tym pytaniu, gdyż po prostu ich waise niszt :] Dla mnie droga z Unity3D była inna - aby robić gry na iOS musiałem przejść na OSX.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość Chrupek3D

mam dokładnie to samo, a raczej pragnę podążać tą samą ścieżką ;)

hmmm windows na Macu... pójdziesz do piekła, zobaczysz :D

Odnośnik do komentarza
Udostępnij na innych stronach

witam

 

mam dosyć spory problem z Unity3D i jakoś nie widzę, aby ludziska na głównym forum mieli blade pojęcie jak to naprawić. Może więc ktoś z forumowiczów spotkał się z takim (bugiem?). Nie będę się jeszcze raz rozpisywał itp więc wklejam link bezpośrednio do wątku na forum:

 

http://forum.unity3d.com/threads/123657-Occlusion-Culling-problem-(lots-of-examples)

 

z góry dziękuje za wszelaką pomoc

Odnośnik do komentarza
Udostępnij na innych stronach

Jeszcze mam jeden problem. Jak przyblizyc do mojego terrain. Bo oteksturowalem na zielono i chciałbym dokładniej teraz go oteksturowac, dodac jakies assety itp. I nie moge tak blisko przybizyc zeby zrobic to precyzyjnie.

Przepraszam jeśli to banalne pytanie ale nie moge tego dojsc

Odnośnik do komentarza
Udostępnij na innych stronach

jezeli drzewka nie są skądś brane to moja rada by pod kamere z gory przygotowywać drzewa by dobrze wygladały z góry a nie z boku.

Poza tym fajna sprawa ile Ci to zajęło?

 

Drzewka robione w sumie na szybko, zeby byly :) planuje je zrobic bardziej w 3D, bo rzucają się w oczy :)

Zrobienie tego zajęło mi... łącznie gdzieś około 4-5 dni :)

Odnośnik do komentarza
Udostępnij na innych stronach

Sie-ma, jest jakiś sposób na sprawdzenie, w którym kierunku porusza się Character Controller? Rozumiem, że mogę to sobie zrobić np. tworząc w jednej klatce jakiś punkcik, a w następnej sprawdzać kąt pomiędzy punkcikiem a obecną pozycją, ale szukam jakiegoś bardziej ogarniętego sposobu.

 

Generalnie to chcę zrobić tak, aby postać się obracała w tym kierunku, w który idzie - jest jakiś easy-way?

Odnośnik do komentarza
Udostępnij na innych stronach

do platformowki? sprawdzaj czy jest wcisniety lewy czy prawy klawisz jesli lewy to zrob ze left walking true a jesli left walking jest true to niech sie kieruje w okreslona oś etc

no i najlatwiej jesli postac zaczyna od neutralnej strony czyli w strone kamery

Odnośnik do komentarza
Udostępnij na innych stronach

Ja pisałem z konta Monia, a teraz mam własne to sobie odpowiem z tego, a co.

 

@arev - zmienna velocity odpowiada za szybkość poruszania się, a nie za kierunek. Idąc za Unity Script Reference:

The velocity returned is simply the difference in distance...

 

PlatformInputController odpowiada niestety za ruch platformowy, a ja mam 8 - kierunkowy.

 

@ledyr - nie, nie do platformówki. Z klawiszami tak zrobić nie mogę z różnych powodów, potrzebuję czegoś, co mnie nakierunkuje na to, jak sprawdzić, w która stronę rusza się postać, po prostu.

 

Anybody?

Odnośnik do komentarza
Udostępnij na innych stronach

Problem rozwiązany. Dzięki za pomoc.

 

...ale pojawił się kolejny. Jest jakiś sposób na sprawdzenie, czy zachodzi kolizja pomiędzy dwoma obiektami spoza skryptu, w którym to napiszę? Przeszukałem cały internet i znalazłem tylko http://answers.unity3d.com/questions/221276/how-to-detect-collision-between-two-objects-from-a.html a tu i tak nie ma odpowiedzi.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak tytułem uzupełnienia do poprzednich problemów - PlatformInput tylko się tak zdradliwie nazywa, ale bez przeszkód można go użyć do ruchu 8-way. Natomiast zmienna, o której pisałem jest trójwymiarowym wektorem i posiłkując się cytatem, który znalazłeś - zwraca ci dokładnie kierunek poruszania się :) Z tymi kolizjami to jest pewnie parę rzeczy, które mógłbyś zrobić - użyć eventów, singletona... Opisz dokładniej jak wygląda sytuacja.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli rzeczywiście tak jest, w jaki sposób mam wyciągnąć z niej kierunek chodzenia w Quaternionach? transform.rotation = ?

 

Dalej, jeśli chodzi o kolizje. Mam dookoła gracze różne sześciany - collidery. Jeden z nich to action collider, który odpowiada za to, czy można wykonać jakąś akcję. Przykładowo: podchodzę postacią do dźwigni i jeśli collider koliduje z dźwignią to zwraca mi się true. Skrypt chcę mieć na postaci, więc generalnie przydałoby mi się coś w stylu:

 

function ActionCollider.OnCollisionStay (collider : Collision) {
if (collider.tag == "dźwignia") {
	Cokolwiek();
}
}

Odnośnik do komentarza
Udostępnij na innych stronach

Obracać postać możesz też za pomocą transform.localEulerAngles - to jest vector3, więc łatwo sobie przeliczyć wektor prędkości z płaszczyzny XZ na rotację w Y.

Co do kolizji - ja bym z tych sześcianów zrobił swego rodzaju sondy. Każdej dał Rigidbody/Trigger i prosty skrypt, mniej więcej taki jak podałeś, który podczas OnCollisionStay (chociaż tu chyba lepiej OnTriggerStay) będzie wysyłał komunikat do skryptu postaci. To jest prosty sposób, a te dodatkowe skrypty na zewnętrznych colliderach nie spowodują żadnego narzutu. Inaczej mógłbyś to zrobić przez np. Physics.SphereCast, ale więcej roboty byłoby z dobraniem się do informacji o tym co trafiłeś no i z optymalizacją, żeby kod nie wykonywał się co klatkę nawet bez kolizji.

Odnośnik do komentarza
Udostępnij na innych stronach

Sie-ma, jest jakiś sposób na sprawdzenie, w którym kierunku porusza się Character Controller? Rozumiem, że mogę to sobie zrobić np. tworząc w jednej klatce jakiś punkcik, a w następnej sprawdzać kąt pomiędzy punkcikiem a obecną pozycją, ale szukam jakiegoś bardziej ogarniętego sposobu.

 

Generalnie to chcę zrobić tak, aby postać się obracała w tym kierunku, w który idzie - jest jakiś easy-way?

 

Hej

 

Tu masz mój kod, który obraca w danym kierunku i to nawet ze smooth (Lerp)

 


private void rotateLegs ()
{
	if ((horizontalDirection != 0) && (verticalDirection != 0))
	{	
		if ((horizontalDirection > 0) && (verticalDirection > 0))
		{
			if (horizontalDirection > verticalDirection) angleOfLegs = -90 + 45 * (horizontalDirection * verticalDirection) + angleAdd;
			else if (Mathf.Abs(horizontalDirection) == Mathf.Abs(verticalDirection)) angleOfLegs = -135 + angleAdd;
			else angleOfLegs = -90 - 45 * (horizontalDirection * verticalDirection) + angleAdd;
		}		
		else if ((horizontalDirection > 0) && (verticalDirection 			{
			if (horizontalDirection > verticalDirection) angleOfLegs = 0 + 45 * (horizontalDirection * verticalDirection) + angleAdd;
			else if (Mathf.Abs(horizontalDirection) == Mathf.Abs(verticalDirection)) angleOfLegs = -45 + angleAdd;
			else angleOfLegs = 0 - 45 * (horizontalDirection * verticalDirection) + angleAdd;
		}
		else if ((horizontalDirection  0))
		{		
			if (horizontalDirection > verticalDirection) angleOfLegs = 180 + 45 * (horizontalDirection * verticalDirection) + angleAdd;
			else if (Mathf.Abs(horizontalDirection) == Mathf.Abs(verticalDirection)) angleOfLegs = 135 + angleAdd;
			else angleOfLegs = 180 - 45 * (horizontalDirection * verticalDirection) + angleAdd;
		}
		else if ((horizontalDirection 			{
			if (horizontalDirection > verticalDirection) angleOfLegs = 90 + 45 * (horizontalDirection * verticalDirection) + angleAdd;
			else if (Mathf.Abs(horizontalDirection) == Mathf.Abs(verticalDirection)) angleOfLegs = 45 + angleAdd;
			else angleOfLegs = 90 - 45 * (horizontalDirection * verticalDirection) + angleAdd;
		}	
	}
	else
	{
		if (horizontalDirection > 0) angleOfLegs = -90 + angleAdd;
		else if (verticalDirection > 0) angleOfLegs = 180 + angleAdd;
		else if (verticalDirection 			else if (horizontalDirection 			else if  ((horizontalDirection == 0) && (verticalDirection == 0))
		{
			angleOfLegs += angleAdd;
		}
	}

	playerDownTransform.rotation = Quaternion.Lerp(playerDownTransform.transform.rotation, Quaternion.AngleAxis(angleOfLegs, Vector3.up), 0.08f);	
}

 

 

horizontal i verticalDirection to wiadomo - od -1 do 1, czyli kierunek z Input - na klawiaturze nie analogowej będziesz miał całe wartości.

 

Kod ten generalnie oblicza mi kąt nóg (oddzielonych od tułowia), dlatego nie patrz na zmienna angleAdd.

 

Cały pomysł polega na tym: angleOfLegs = 90 + 45 * (horizontalDirection * verticalDirection) - niestety mimo ze mamy koksów w pracy z doktoratami z inżynierii programowania, ten mój pomysł na obliczenie kąta przeszedł bez lepszego pomysłu z ich strony :]

Odnośnik do komentarza
Udostępnij na innych stronach

function OnTriggerStay (collider : Collider) {
   collider.gameObject.Find("SideColliders").SetActiveRecursively(true);
}

 

O mam sobie taki kod. Chcę żeby przy kolizji uaktywnił się obiekt SideColliders, który jest childem collidera. Coś robię nie tak? Bo mam exception, że takiego obiektu nie ma. Jest. Sprawdzałem 3 razy.

Odnośnik do komentarza
Udostępnij na innych stronach

spróbuj tak, z glowy pisalem wiec moze byc nie do konca poprawne :)

 

function OnCollisionEnter( other : Collider)

{

var sideCollider : GameObject = GetComponentInChildren(Collider);

if( sideCollider )

sideCollider .enabled = true;

}

Odnośnik do komentarza
Udostępnij na innych stronach

v0idspace: chyba próbujesz nadpisać "collider" - czyli skrót do collidera dołączonego do obiektu, na którym jest skrypt - colliderem zwracanym przy kolizji z triggerem. Spróbuj zmienić nazwę zmiennej na np. collider2. Poza tym ja jestem zwolennikiem używania referencji do innych obiektów, zwłaszcza że chyba masz je na stałe przypięte do postaci.

Wichur: przekombinowałeś :) Próbujesz zapisać Collider do zmiennej typu GameObject. Poza tym OnCollisionEnter zwraca Collision, a nie Collider.

Tak jak pisałem - zrobić stałą referencję do tego obiektu SideColliders i nie bawić się w wyszukiwanie po nazwie - jest powolne i nieuzasadnione tutaj.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie mam pojęcia, w jaki sposób miałoby to działać.

 

function OnCollisionEnter( other : Collider) //potrzebuję OnTriggerStay, ale to już mniejsza

{

var sideCollider : GameObject = GetComponentInChildren(Collider); //ustalasz wartość sideCollider o typie GameObject używając funkcji, która zwraca komponent obiektu Collider (którego nie masz, nazwałeś go other)

if( sideCollider ) //?

sideCollider .enabled = true; //SetActiveRecursively akurat potrzebuję, ale tu też mniejsza

}

 

Generalnie wrzucałem do Unity, bo stwierdziłem, że może to ja nie rozumiem, próbowałem to tweakować w różne strony, ale i tak nie widzę w tym sensu. Możesz dokładnie wyjaśnić, co chciałeś zrobić? Ja chcę tylko znaleźć obiekt - dziecko obiektu o danej nazwie, z którym mam kolizję i aktywować go razem ze wszystkimi jego dziećmi. :(

 

EDIT: Nie nie arev, nie mogę zrobić stałej referencji. Generalnie mam sobie duuużo obiektów, z czego każdy ma childrena o nazwie SideColliders, który musi być nieaktywny dopóki nie podejdę blisko.

 

EDIT2: Nadpisywanie collidera to trafna uwaga, zmieniłem na "collidedObject" żeby mi się nie myliło, ale mam tam jeszcze dłuuugi fragment kodu, który korzystał właśnie z "collider" i wszystko jest okej. Anyway, po zmianie na collidedObject ciągle mam null reference exception.

Edytowane przez v0idspace
Odnośnik do komentarza
Udostępnij na innych stronach

Nie jestem pewien czy dobrze cię rozumiem, popraw jeśli pomieszałem. Jesteś w obiekcie A (na nim działa skrypt). Obiekt A koliduje z obiektem B, który ma jakieś nieaktywne dzieci. Podczas kolizji chcesz aktywować dzieci obiektu B?

Jeśli tak to:

function OnTriggerEnter (other : Collider) {
other.SetActiveRecursively(true);
}

Mam nadzieję, że nie pomyliłem niczego w składni, sam piszę w C# :]

  • Confused 1
Odnośnik do komentarza
Udostępnij na innych stronach

Aha. Chyba trzeba zastosować Find z Transform, bo z GameObject szuka chyba po całej scenie.

function OnTriggerEnter (other : Collider) {
var sc : Transform;
sc = other.transform.Find("SideColliders");
sc.gameObject.SetActiveRecursively(true);
}

?

 

@dół: : )

Edytowane przez arev
Odnośnik do komentarza
Udostępnij na innych stronach

1242misiu_dziekuje_stronka-agusi.jpg

 

function OnTriggerStay (collision : Collider) {

var sc : Transform;

sc = collision.transform.Find("SideColliders");

sc.gameObject.SetActiveRecursively(true);

}

 

function OnTriggerExit (collision : Collider) {

var sc : Transform;

sc = collision.transform.Find("SideColliders");

sc.gameObject.SetActiveRecursively(false);

}

 

Generalnie działa i wszystko jest okej, ale wyskakuje mi ciągle ten Null Reference Exception. Tylko, że teraz wyskakuje jak parę razy popodchodzę do tego collidera, on się włączy, wyłączy, i dopiero za jakimś razem ten błąd. Nic złego nie robi, ale czerwono świeci i po mi to tak no. Jakiś pomysł?

Edytowane przez v0idspace
Odnośnik do komentarza
Udostępnij na innych stronach

@v0idspace: Może za którymś razem kolidujesz z którymś z Side Colliderów, które już nie mają dzieci o nazwie "SideColliders". Dodanie warunku if (sc != null) i zamknięcie w nim SetActiveRecursively powinno załatwić sprawę.

 

p.s. Chyba nie ma potrzeby włączania już włączonego obiektu co ramkę? Zamiast OnTriggerStay Możesz włączać tylko w OntriggerEnter i wyłączać w OnTriggerExit - tak jak masz teraz.

Edytowane przez arev
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności