Ruch kamery w grze platformowej

Ogólne dyskusje na temat Blender Game Engine.
Awatar użytkownika
robertdolega
Posty: 96
Rejestracja: 31 sty 2018, 7:00
Kontaktowanie:

Ruch kamery w grze platformowej

Postautor: robertdolega » 22 lut 2018, 15:58

Zanim nauczę się języka C# i przejdę na Godot, chcę zrobić jeszcze jedną grę w Blenderze. Chcę zrobić jednoosobową platformówkę. Mam tylko problem ze śledzeniem bohatera przez kamerę. Chodzi mi o to, żeby kamera poruszała się tylko w lewo lub w prawo i żeby zaczynała się przesuwać gdy bohater będzie w jakiejś odległości od krawędzi ekranu. Tak jak sytuacja wygląda np. w grze Mario. Napiszę teraz czego już próbowałem.

1. Najpierw połączyłem kamerę do bohatera (Keep Transform) ale bohater byłby nieruchomy względem ekranu. Wrażenie było takie, że to planszą się steruje.

2. Więc ustawiłem na planszy obiekt (Empty Cube) po prawej stonie. Ustawiłem go na (Rigid Body) i dałem (actuator Collision-Motion). Następnie połączyłem kamerę z tym obiektem. Gdy bohater dotykał tego obiektu, obiekt się przesuwał, a wraz z nim kamera, ale po pierwsze obraz drgał, a po drugie nie mogę przyłączyć kamery do dwóch obiektów jednocześnie, by kamera się poruszała w obie strony.

Napisałem trochę haotycznie, ale najprościej jak umiałem. W każdym razie chcę by kamera płynnie śledziła bohatera. Jak mogę to zrobić? Da się to zrobić bez napisania skryptu w Pythonie?

Awatar użytkownika
maniek
Administrator
Posty: 616
Rejestracja: 18 lip 2012, 11:03

Re: Ruch kamery w grze platformowej

Postautor: maniek » 22 lut 2018, 16:18

Sprawdź tutaj czy znajdziesz odpowiedź na swoje pytanie :
https://www.youtube.com/watch?v=swPaEvzlbsQ

Na pierwszy rzut oka wydaje mi się, że nie obejdzie się bez Pythona.. Powiem inaczej kiedyś też chciałem wszystko robić na kostkach, ale z czasem zauważyłem, że szybciej można coś osiągnąć poprzez skrypt. Jeśli trzeba będzie pomóc coś przy kodzeniu to dopiero wieczorem..

P.S z tym C# to bym się tak nie śpieszył bo wyczytałem, że to jest nowość i może być trochę bugów.. Zacznij od GDScript'a jest podobny do pythona, więc nawet i ja skłaniam się ku niemu
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-koszulki.com.pl

Awatar użytkownika
robertdolega
Posty: 96
Rejestracja: 31 sty 2018, 7:00
Kontaktowanie:

Re: Ruch kamery w grze platformowej

Postautor: robertdolega » 22 lut 2018, 16:39

Ok sprawdzę. Dzięki. A dopiero nauczyłem się co to zmienne, pętle, operatory, inkrementacja i dekrementacja oraz klasy. Myślę, że to występuje w każdym języku więc jeśli bym się zaczął uczyć Pythona czy GDScript, to ta wiedza się przyda co nie?

Awatar użytkownika
maniek
Administrator
Posty: 616
Rejestracja: 18 lip 2012, 11:03

Re: Ruch kamery w grze platformowej

Postautor: maniek » 22 lut 2018, 18:34

Tak to są podstawy każdego języka, tylko składnia się zmienia..
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-koszulki.com.pl

Awatar użytkownika
robertdolega
Posty: 96
Rejestracja: 31 sty 2018, 7:00
Kontaktowanie:

Re: Ruch kamery w grze platformowej

Postautor: robertdolega » 22 lut 2018, 20:46

Dzięki wielkie maniek. Ten filmik rozwiązał nie tylko ten problem, ale i inne. Wiesz co robiłem z kamerą gdy robiłem gry 2D? Zamiast ustawić na Orthographic, to ja używałem Perspective i dawałem ogniskową na 500mm, żeby spłaszczyć obraz :lol: Myślisz, że użycie Orthographic jakoś przyczynia się do lepszej wydajności gry skoro wyświetla się w 2D a nie w 3D?

Awatar użytkownika
maniek
Administrator
Posty: 616
Rejestracja: 18 lip 2012, 11:03

Re: Ruch kamery w grze platformowej

Postautor: maniek » 22 lut 2018, 23:56

No cóż fajnie, że filmik się przydał i rozwiązał kilka problemów. Co do wydajności to odpowiedź brzmi : Nie.. Kamera Orthographic nie przyczyni się do polepszenia jakości, ponieważ scena jest dalej 3D, a my przez ustawienie kamery tylko widzimy to jako 2D. Obiekty które są głębiej nawet zasłonięte przez inny obiekt i tak są renderowane przez kartę graficzną.. Można użyć Occlusion Culling, ale to się przydaje bardziej przy 3D.

A to obyło się bez Pythona jeśli chodzi o sterowanie kamerą?? Wiesz kiedyś wzbraniałem się od pythona wszystko chciałem zrobić na kostkach logiki, a pewnych rzeczy się i tak nie dało.. Teraz nawet najprostszy problem staram się rozwikłać za pomocą Pythona niż Logic Bricks ;)
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-koszulki.com.pl

Awatar użytkownika
robertdolega
Posty: 96
Rejestracja: 31 sty 2018, 7:00
Kontaktowanie:

Re: Ruch kamery w grze platformowej

Postautor: robertdolega » 23 lut 2018, 0:13

Dało radę bez Pythona. Taki efekt właśnie chciałem osiągnąć :)

Ja bym się bardzo chciał nauczyć Pythona. Ogólnie jakiegoś języka programistycznego. Codziennie oglądam lekcje tak po 2 godziny i próbuję sam pisać to czego się nauczyłem. Ale mam jakąś barierę. Mógłbyś mi powiedzieć jak to tak w skrócie wygląda w przypadku gier? Naprawdę bez przerwy używa się tych wszystkich pętli i tych wszystkich działań matematycznych? Np. w HTML piszę co chcę wykonać, na jakim pliku, kiedy i w jakim momencie. A jak włączyłem kurs C# to mi się w głowie zakręciło. Same liczby. Wiem, że HTML to jest banalny język, ale w nim wszystko jest takie przejrzyste. Jak to zacząć ogarniać? Chyba bym się ze szczęścia popłakał jak bym się kiedyś nauczył tego trochę i umiał coś napisać.

Może trzeba mieć umysł ścisły? Z kombinowania jak koń pod górę, to jestem dobry, ale jak widzę obok siebie (++!? =={0}) to zeza dostaję ;)

Awatar użytkownika
maniek
Administrator
Posty: 616
Rejestracja: 18 lip 2012, 11:03

Re: Ruch kamery w grze platformowej

Postautor: maniek » 23 lut 2018, 1:00

Zacznijmy od tego że HTML nie jest językiem programistycznym. Jest to system znaczników pozwalający na formatowanie tekstu oraz innych elementów.

Jeśli chodzi o programowanie.. Nie jest ważne jakiego języka się nauczysz.. Najważniejsza jest umiejętność logicznego rozwiązywania problemów. Jeżeli np.: problemem jest przechowywanie wyniku i odczytanie go np.: przy następnym uruchomieniu gry to rozwiązaniem jest np.: zapisywanie tego wyniku do pliku na dysku, następnie przy odtworzeniu gry, sprawdzenie czy plik istnieje, jeżeli tak to odczytanie z niego wartości i wyświetlenie w grze. Sam widzisz, że w rozwiązaniu słownym użyłem instrukcji warunkowej "If".

Jeżeli znalazłeś rozwiązanie problemu to nieważne w jakim języku piszesz. Zarówno w Pythonie, PHP czy C# znajdziesz odpowiednie funkcje np.: zapisu pliku jak i odczytu pliku. Różnić się będą nazwami lub/i użyciem w zależności od danego języka programistycznego, ale będą robić to samo.

To nie jest tak, że ja w Pythonie wymiatam. W większości używam Pythona kiedy kostek logiki jest na tyle dużo, że robi się pajęczyna z której nic już nie można odczytać. Wtedy przenoszę to do Pythona bo jest to dla mnie czytelniejsze i mam więcej kontroli. Jeśli chodzi o jakieś zaawansowane funkcje matematyczne na przykład wektory 3D, transformacji, orientacji to nie jest tak, że umiem to na pamięć. Po prostu wyszukuje w sieci informacje jak dany problem rozwiązać, to co znajdę staram się wziąć na logikę i zrozumieć, podstawić to do swojego skryptu i to sprawdzić jak u mnie działa.

Postaram się znaleźć jakiś prosty przykład który za pomocą kostek logiki nie jest możliwy albo jest utrudniony/niewygodny, a w Pythonie jest do zrobienia
Nowy serwis z fajnymi, imprezowymi, niedrogimi koszulkami - http://fajne-koszulki.com.pl

Awatar użytkownika
Linuxblender
Posty: 21
Rejestracja: 22 lut 2018, 18:44

Re: Ruch kamery w grze platformowej

Postautor: Linuxblender » 23 lut 2018, 10:53

Jak chcesz ziomeczku pisać strony internetowe w HTML , CSS , PHP , itd to Ci bardzo polecam ,
Ale do gier jak dla mnie sie nie nadaje ten język :D heheeh
Linux blender

Awatar użytkownika
Linuxblender
Posty: 21
Rejestracja: 22 lut 2018, 18:44

Re: Ruch kamery w grze platformowej

Postautor: Linuxblender » 23 lut 2018, 10:54

Ja sam sobie pisze w HTML ,,

Bardzo uwielbiam wordpressa , mega sprawa :)
Linux blender


Wróć do „Ogólnie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość