Jump to content
Unity Insider Forum
MaZy

SteamVR Spielerkörper und die Kamera

Recommended Posts

Hallo hab ein Problem, was ich nicht lösen kann.

Folgendes sieht man im Hierachy.

Player
--ControllerLinks
--ControllerRechts
--Camera

Um den Spieler zu bewegen bewegt man natürlich Player GameObject. In VR ist so, dass die Camera "dich" repräsentiert. Also wenn du in der Wirklichkeit dich nach Links bewegest.. ist z.B. die Camera in der localposition x = -1 oder so. Das heißt. Der Player bewegt sich nicht.. sondern die Kamera. 

Folgende Probleme hat man damit. Wenn Player einen Charactercontroller hat, wird er sich mit der Camera nicht bewegen. Man kann also dann in die Wände reingucken.
Nun hab ich gelesen, dass man ja vllt den Körper zu der Kamera Position bewegen kann. Das geht.. nur doof, dass dieser "Körper" nicht aber Playerobject ist, denn wenn es so wäre, würde man sich unendlich bewegen, weil ja eigentlich beide sich versuchen immer zu anpassen. Und da es nicht Playerobject ist, wird Player selbst nicht mit Wänden kollidieren. Denn die Idee war, wenn ich mit der Kamera zu nah an die Wand kommen, dass ich nach hinten gepusht werde

Vllt habt ihr Ideen?

 

Share this post


Link to post
Share on other sites

Es ist sehr wichtig, dass du Regel Nummer eins nicht brichst: Dass die Kamera niemals von durch unberechenbare Faktoren außer dem Kopf des Spielers beeinflusst wird. Wenn der Spieler seinen Kopf in die Wand hält, dann darfst du ihn davon nicht abhalten. Was du allerdings machen kannst ist, das Bild schwarz zu machen, bis der Kopf wieder aus der Wand raus ist. Coolere Implementationen zeigen noch simple Fixpunkte an, damit du nicht die Orientierung verlierst und deinen Kopf wieder aus der Wand herauskriegst.

Share this post


Link to post
Share on other sites

Warum ist das Regel Nummer eins? Kenne ein paar VR spiele die das haben. Ja auch das mit Bild schwärzen.

Also ich hab bei Pavlov VR mal angeschaut. Da ist das auch so wie ich mir das vorstelle. Sobald man mit dem Kopf gegen die Wand kommt (mit etwa 30-50 cm Abstand) wird man in die entgegengesetzte Richtung zurück "gestoßen".

Wahrscheinlich gehe ich falsch vor. Ich muss vllt tatsächlich die Kollision abfragen und selbst per Script dann berechnen, dass Player Gameobject zurückgestoßen werden.

(nach 15min)
Ich habe mal mal ein Testprojekt erstellt und getestet. War mir nicht sicher, ob OnCollision* bei Childobjekte auch geht. Es geht nicht. Aber da wo der Rigidbody ist (oder beim Parent?) kann ich abfragen, welcher Collider kollidiert. So kann ich zurück stoßen lassen.
OnTrigger* geht als Child und muss von da an Parent schicken (dazu hab ich eh bereits standardscripte fertig ^^), aber hat keine Kollisionspunkte sondern so grobe Punkte. 

Hab bisschen rumprobiert und damit könnte ich das eventuell lösen.

Share this post


Link to post
Share on other sites
vor einer Stunde schrieb MaZy:

Warum ist das Regel Nummer eins?

Weil es die Dissonanz zwischen visueller Wahrnehmung und Gleichgewichtssinn ist, die Schwindel verursacht. Gibt ein paar Leute, die damit keine Probleme haben, aber ein sehr großer Teil der Spieler kann ein Spiel direkt weglegen, wenn die Kamera nicht nahezu ausschließlich durch den Kopf kontrolliert wird.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...