Jump to content
Unity Insider Forum

Bräuchte einen einfachen 3D Flyaround evtl. im Firefox


N_Gnom

Recommended Posts

Und zwar steh ich bissl unter Zeitdruck und habe schon ewig nix mit Unity gemacht.

Ich muss/möchte ein 3D Modell eines Raumes machen und durch diesen soll man simple navigieren können, um sich sozusagen alles ansehen zu können.

Am 3D modell bin ich dran das umzusetzen.

Gut wäre es wenn man dies im Browser ansehen könnte, ich also auf meinem Webspace anbieten kann.

Und damit es mit Smartphones und Tablet auch funktioniert, wäre eine Touch-Bedienbarkeit sinnvoll.

 

Vielleicht gibt es ja da auch schon was fertiges, wo ich das Modell nur noch einfügen muss.

Es ist ja nichts kommerzielles, sondern es soll ein Umbau für ein gemeinnütziges Projekt werden und diese Art der Präsentation wäre natürlich von Vorteil wenn es dem Eigentümer vorgelegt wird.

 

Eventuell kann mir da ja jemand helfen, es muss ja nicht zwingend Unity sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

sollte nicht ein First Person Controller reichen? Der hat doch auch Mobile Unterstützung oder nicht? Ansonsten ungefähr so:

https://hastebin.com/oxedawuget.vbs

 

Wenn das nicht geht sag Bescheid, dann kann ich es dir schnell machen.

 

Edit:

https://www.assetstore.unity3d.com/en/#!/content/14489

https://forum.unity3d.com/threads/simplle-free-fly-camera-script.167604/

Link zu diesem Kommentar
Auf anderen Seiten teilen

erstmal recht vielen dank.klingt doof ich weiß, bin aber schon zulange aus unity raus...also modell in unity laden.kamera und licht erstellen und positionieren.die kamera dann z.b. mittig in dem 3d objekt plazieren und dein script der kamera zuweisen.seh ich das so richtig?

 

das asset aus deinem link is leider nicht kompatibel mit unity 5.6.0b1

Link zu diesem Kommentar
Auf anderen Seiten teilen

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

public class NewBehaviourScript : MonoBehaviour

{

void Start ()

{

 

}

float speed;

float direction;

void Update ()

{

speed = Input.GetAxis("Vertical");

direction = Input.GetAxis("Horizontal");

 

Vector3 moveVector = transform.forward * speed * Time.deltaTime;

transform.position += moveVector;

 

transform.Rotate(new Vector3(0, direction, 0));

}

}

Auf die Kamera drauf und es funktioniert mit Pfeiltasten, mit Touch muss ich selber mal schauen

 

Edit: Also mir fallen da mehrere Methoden ein, aber ich mache nichts mobiles, also habe ich auch nichts aufgesetzt um das zu testen, aber das könnte gehen(ungetestet)

https://hastebin.com/dazuneveji.cs

https://unity3d.com/...mobile-controls

 

Ansonsten würde ich mit dem Unity UI 4 Buttons hinzufügen für jede Richtung und dann vor und zurück bzw. drehen einbauen, wenn nichts anderes geht kann ich dir dazu auch noch ein Beispiel schicken

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich werd erstmal unity neu installieren.es hängt beim compilieren kurz vor schluss.is halt eine beta.werd doch die letzte final installieren

 

aber das mit den pfeiltasten funktionierte schonmal.

 

edit: ich würde es jetzt ohne touch lassen.

Würde es aber gern so haben wollen dass nur noch die Bewegung nach Vorn oder Hinten über Tasten möglich ist, und man mit der Maus die Rotation händelt.

Und die Vorwärtsbewegung immer in Richtung der Blickrichtung(respektive die Rückwärtsbewegung entgegen) der Kamera geschieht.

Und da ich nicht um code betteln will, würden mir schon ein paar stichpunkte reichen, wie ich die mausbewegung abfange(wobei auch hoch und runter blicken möglich sein soll, aber die Bewegung vorwärts und rückwärts immer auf einer Höhe bleibt)

Da wäre vielleicht eine Parent-Child Lösung notwendig, nur weiß ich da grad nicht Bescheid wie das in Unity geht.

(aber dazu kann ich mich ja belesen)

Und zum Schluss, zwar nicht zwingend notwendig, aber wenn ichs irgendwie hinbekomme, eine Art Physik oder Kollisionsabfrage damit die Kamera im Raum bleibt.

Bis Montag habe ich ja noch Zeit für das Ganze und mit ein paar Stichpunkten bekomme ich das hoffentlich hin.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnte mir eventuell bei dem Mouselook helfen?

Also den Mouselook würd ich ja noch hinbekommen, dazu hatte ich was im Netz gefunden.

Nur dass die Kamera sich lediglich nach vorn und hinten bewegen kann und immer in Richtung des Mouselook sozusagen.

Ich hab früher sowas schon mit anderen Programmiersprachen umgesetzt, aber eben nicht mit Unity und schon garnicht C#.

 

Ich hatte am We einfach nicht die Zeit weiter zu probieren, es wäre lieb wenn es wenigstens ein paar Tips geben würde.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi.

Hast Du jetzt das von QuesterDesura genommen?

 

ich werd erstmal unity neu installieren.es hängt beim compilieren kurz vor schluss.is halt eine beta.werd doch die letzte final installieren

 

aber das mit den pfeiltasten funktionierte schonmal.

 

edit: ich würde es jetzt ohne touch lassen.

Würde es aber gern so haben wollen dass nur noch die Bewegung nach Vorn oder Hinten über Tasten möglich ist, und man mit der Maus die Rotation händelt.

Und die Vorwärtsbewegung immer in Richtung der Blickrichtung(respektive die Rückwärtsbewegung entgegen) der Kamera geschieht.

Und da ich nicht um code betteln will, würden mir schon ein paar stichpunkte reichen, wie ich die mausbewegung abfange(wobei auch hoch und runter blicken möglich sein soll, aber die Bewegung vorwärts und rückwärts immer auf einer Höhe bleibt)

Da wäre vielleicht eine Parent-Child Lösung notwendig, nur weiß ich da grad nicht Bescheid wie das in Unity geht.

(aber dazu kann ich mich ja belesen)

Und zum Schluss, zwar nicht zwingend notwendig, aber wenn ichs irgendwie hinbekomme, eine Art Physik oder Kollisionsabfrage damit die Kamera im Raum bleibt.

Bis Montag habe ich ja noch Zeit für das Ganze und mit ein paar Stichpunkten bekomme ich das hoffentlich hin.

 

Wenn ich das so lese, wäre vielleicht der Firstperson-Controller aus den Standard-Assets was für Dich. Dieser erfüllt alle deine Eigenschaften die Du haben möchtest.

 

 

MfG Felix

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin mir am Smartphone grad nicht sicher ob ich die mit installiert hatte.geht ja nachzuladen.bin mir nur nicht sicher ob ich dann beim anpassen nicht irgendwelche Schnitzer mache. Und, ja, habe seinen code genommen und dieser funktioniert mit Pfeiltasten. Nur habe ich festgestellt dass ein mouselook mit extra vorwärts und rückwärts Bewegung in Blickrichtung, respektive entgegen diese, sinnvoller wäre. Ich weiss ich muss mich mehr mit unity befassen, aber als alleinerziehender reicht ein 24h Tag manchmal einfach nicht aus.

Ich danke somit schon mal für eure Geduld

 

 

edit:

ich habe jetzt mal das touch script ausm asset store genommen welches QuesterDesura verlinkt hatte.

Ich poste mal den code, da alles was die camera.xxx abfragen betrifft als fehler angezeigt wird.

Wie gesagt ich bin da noch nicht so firm, aber getcomponent sollte die lösung sein, nur wie setze ich das um?habe mich schon belesen, und sollte somit eineinen zeiger auf meine camera legen um die einzelnen werte auslesen zu können.

So richtig hab ich es bisher nicht hinbekommen.

Ich poste erstmal den code, da dieser eben wohl eben touch fähig ist, was mit der maus eventuell ja auch im browser gehen sollte.und wenn nicht hab ich was dazugelernt.

 

// Just add this script to your camera. It doesn't need any configuration.
using UnityEngine;
public class TouchCamera : MonoBehaviour {
Vector2?[] oldTouchPositions = {
 null,
 null
};
Vector2 oldTouchVector;
float oldTouchDistance;


void Update() {
 if (Input.touchCount == 0) {
  oldTouchPositions[0] = null;
  oldTouchPositions[1] = null;
 }
 else if (Input.touchCount == 1) {
  if (oldTouchPositions[0] == null || oldTouchPositions[1] != null) {
oldTouchPositions[0] = Input.GetTouch(0).position;
oldTouchPositions[1] = null;
  }
  else {
Vector2 newTouchPosition = Input.GetTouch(0).position;

transform.position += transform.TransformDirection((Vector3)((oldTouchPositions[0] - newTouchPosition) * camera.orthographicSize / camera.pixelHeight * 2f));

oldTouchPositions[0] = newTouchPosition;
  }
 }
 else {
  if (oldTouchPositions[1] == null) {
oldTouchPositions[0] = Input.GetTouch(0).position;
oldTouchPositions[1] = Input.GetTouch(1).position;
oldTouchVector = (Vector2)(oldTouchPositions[0] - oldTouchPositions[1]);
oldTouchDistance = oldTouchVector.magnitude;
  }
  else {
Vector2 screen = new Vector2(camera.pixelWidth, camera.pixelHeight);

Vector2[] newTouchPositions = {
 Input.GetTouch(0).position,
 Input.GetTouch(1).position
};
Vector2 newTouchVector = newTouchPositions[0] - newTouchPositions[1];
float newTouchDistance = newTouchVector.magnitude;
transform.position += transform.TransformDirection((Vector3)((oldTouchPositions[0] + oldTouchPositions[1] - screen) * camera.orthographicSize / screen.y));
transform.localRotation *= Quaternion.Euler(new Vector3(0, 0, Mathf.Asin(Mathf.Clamp((oldTouchVector.y * newTouchVector.x - oldTouchVector.x * newTouchVector.y) / oldTouchDistance / newTouchDistance, -1f, 1f)) / 0.0174532924f));
camera.orthographicSize *= oldTouchDistance / newTouchDistance;
transform.position -= transform.TransformDirection((newTouchPositions[0] + newTouchPositions[1] - screen) * camera.orthographicSize / screen.y);
oldTouchPositions[0] = newTouchPositions[0];
oldTouchPositions[1] = newTouchPositions[1];
oldTouchVector = newTouchVector;
oldTouchDistance = newTouchDistance;
  }
 }
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...