Jump to content
Unity Insider Forum

Zer0Cool

Members
  • Content Count

    2,040
  • Joined

  • Last visited

  • Days Won

    145

Zer0Cool last won the day on September 14

Zer0Cool had the most liked content!

Community Reputation

416 Excellent

8 Followers

About Zer0Cool

  • Rank
    Advanced Member
  • Birthday 01/04/1974

Profile Information

  • Gender
    Male
  • Location
    Germany

Contact Methods

  • Skype
    zer0f0rce

Recent Profile Visitors

8,681 profile views
  1. Schaut mir nach einem Kameraproblem aus ... evtl. hat deine Kamera sein Target (Spieler) nicht gefunden oder irgend ein Skript (welches die Kamera verwendet) hat die Kamera nicht gefunden .. und daher (wie Sascha schon meinte) ggf. eine Null-Pointer-Exception geworfen. Schau dir am besten mal alle Codeteile an die etwas mit der Kamera machen und baue dort Log-Ausgaben ein, vor allem auch die Stellen in denen die Kamera auf das Ziel positioniert bzw. initialisiert wird. Um "Logausgaben" auch im Build sehen zu können kannst du beispielsweise anstelle von "Debug.Log" diese Klasse hier verwenden: http://wiki.unity3d.com/index.php?title=DebugConsole
  2. Ich spiele gerade ein MMORPG das mit TPC programmiert wurde und die Netzwerkperformance ist unterirdisch und ich führe das zu großen Teilen auf TCP zurück. Vor allem in Raids gibt es hier massive FPS-Probleme, also wenn X Spieler in einer Gruppe kämpfen. Meine Vermutung ist dadurch das TCP sich alle Pakete bestätigen lässt steigt die Netzwerklast (und die CPU-Last) mit der Anzahl der Spieler extrem an, vor allem wenn viele kleine Pakete pro Sekunde verschickt werden (was normalerweise bei solchen Spielen der Fall ist). Kurzum ich denke bei Spielen die eine gewisse Anzahl von Spielern in einem "Raum" nicht überschreiten bzw. eine gewissen Menge an Paketen pro Sekunde nicht überschritten wird ist TPC gut, da leicht zu implementieren.. geht es aber um eine komplexe Kommunikation zwischen mehreren Spielern (wie oft in ein einem MMORPG Raid) kann ich TCP nicht empfehlen.
  3. Schwer zu analysieren ohne alle Komponenten zu kennen. Meine Vermutung ist mal. dass die Animation des Sprites den RB in den Collider den Blocks drückt. Also mal prüfen wie der Code sich verhält wenn du alle Stellen wo die Animationen getriggert werden ausschaltest : // alle Stellen mit anim.xxx // anim.SetBool Sollte der Controller danach nicht mehr hängen und funktionieren, dann solltest du die Root-Motions der Animationen entfernen, weil der Controller sollte entweder über den RB (Physic-Based -Driven) oder über die Root-Animations (Animation-Driven) betrieben werden, beides zusammen könnte Probleme machen.
  4. Kommt auf die Implementierung des Controllers an, bei der Verwendung von Root-Animations rennt / bewegt sich der Spieler aufgrund der Animation.
  5. Sicher das es der CrossPlatformInputManager ist und du nicht eher ein Problem mit den Zuständen deines Animationcontrollers hast (da das GO des Spielers beim Laden vermutlich nicht neu geladen wird)? Da würde es Helfen direkt nach dem Level laden den Controller z.b. in den Idle-State oder ähnliches zu versetzen.
  6. Man könnte das Objekt sobald es sich in einen anderen Collider hineinbewegt auch leicht zurücksetzen (in die Gegenrichtung der Bewegung der Hand oder des Players) und dann das Objekt dem Spieler aus der Hand fallen lassen. Sollte sich der Gegenstand nach dem Zurücksetzen immer noch im anderen Collider befinden würde ich es auf die Initialposition zurücksetzen. Allerdings kann dieses Zurücksetzen oder das aus der Hand fallen lassen den Spieler auch nerven. Dieses leidige Problem des Clippens eines Gegenstandes in ein anderes Objekt hatte ich auch schon ohne VR bei einem einfachen Schwertkampf mit Schild. Hier clippte das Schild immer in den Gegner (wenn der Spieler zu nah an den Gegner lief) und ich musste daraufhin die Position des Spieler korrigieren damit das Schild wieder "frei" wird.
  7. Da hast du grundsätzlich was falsch verstanden. Die OnTriggerStay-Methode liefert dir immer den Collider der gerade im Trigger steht. wie du diese Variable benennst, ob "other" oder "fremderCollider" oder "horst" ist völlig egal. Allerdings kannst du dir über den Collider das zugehörige GO geben lassen und hier prüfen ob es sich es im das GO handelt welches den Spieler definiert. Viele machen das über den Tag des GOs: //Check to see if the tag on the collider is equal to Player if (other.tag == "Player") { Debug.Log("Triggered by the Player"); } , du kannst aber auch eine Komponente des GOs abfragen und so ermitteln, welcher Collider dort in deinen Trigger geraten ist: //Check to see if the gameObject of the collider has a PlayerController component PlayerController playercontroller = other.gameObject.GetComponent<PlayerController>(); if (playercontroller != null) { Debug.Log("Triggered by the Player"); } In dem Beispiel hat der Spieler einen PlayerController und er wird darüber "erkannt".
  8. Eine andere Methode wäre noch immer zu prüfen, ob die Farbe des Würfels der Farbe der Plattform entspricht auf dem der Würfel landen möchte. Dies könnte man über einen Raycast in Flugrichtung des Würfels (der Velocity seines RB) oder der Steuerrichtung des Spielers herausbekommen. Wenn die Farbe des Würfels nicht passt, dann wird der Collider des Würfels einfach deaktiviert. Das klappt aber nur, wenn der Würfel nur auf einer Plattform landen kann, sobald 2 Plattformen aneinander grenzen können oder der Raycast nicht exakt entscheiden kann wo der Würfel landen wird, dann wird es denke ich mit dieser Methode schwierig. Du musst halt schauen was sich am besten eignet. Jede Methode hat seine Vor- und Nachteile.
  9. Das sich bewegende Objekt (Objekt 1) muss einen Rigidbody(2D) besitzen. Unity erkennt nur Kollisionen zwischen 2 Objekten mit Collidern wenn mindestens 1 Objekt davon einen RB besitzt.
  10. Besser wenn du hier die generische Typ-Parameterversion der Funktion verwendest: new AudioClip[]{Resources.Load<AudioClip>("Sounds/000"), Resources.Load<AudioClip>("Sounds/001") ...
  11. Aber aufpassen die Erde ist flach die gehen hier von falschen Tatsachen aus
  12. Hier ist ein Codeschnipsel der wohl sowas macht. Von Haus aus gib es da glaub nix: http://wirebeings.com/markerless-gps-ar.html
  13. Der Stamm des Baumes (3D-Modell) muss auf der Y-Achse liegen, vermutlich liegen deine Bäume auf X oder Z. Wenn der Baum aus Blender kommt liegt die Achse vermutlich auf Z und das muss beim Export korrigiert werden: Der Anchor des Baumes muss zudem am Boden des Stammes liegen.
  14. Ich würde mal eingie Voraussetzungen für den Algorithmus definieren (sofern ich es bisher verstanden habe): - alle Punkte müssen auf einer Ebene liegen - die Fläche sollte geschlossen sein - es sollen keine überlappenden Triangles (Dreiecke) erzeugt werden Das Problem ist jedenfalls equivalent dazu aus einer 2D-Punktwolke einen Mesh zu erstellen, dafür gibt es bestimmt schon einige existierende Algorithmen. Man kann sich natürlich auch selbst einen Algorithmus ausdenken, dass kann aber sehr aufwendig werden, da dieser auch für jeden Fall fehlerfrei funktionieren sollte. Ich würde bei einem eigenen Algorithmus etwas in der Art machen, zuerst den Rand der Punktwolke zu ermitteln (die Punkte die den Rand bilden sollen) und dann über den Rand beginnend Dreiecke zu erzeugen. Dabei werden die Punkte in der näheren Umgebung des Randes gesucht und miteinander entsprechend verbunden, dabei muss man immer darauf achten das die Dreiecke sich nicht überlappen dürfen. Die Fläche wächst dabei quasi von außen nach innen zu (wie bei einem Zellwachstum). Am Ende bleibt vermutlich ein Loch im Inneren ( = der innere Rand), dieses muss man dann am Ende nochmal mit Dreiecken füllen. Leider ist das hier nur eine sehr grobe Beschreibung des Algorithmus, es gibt bestimmt noch etliche Stolperfallen und Probleme dabei zu lösen,
×
×
  • Create New...