Jump to content
Unity Insider Forum

Xurium

Members
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

1 Neutral

About Xurium

  • Rank
    Newbie

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Liebe Community, ich arbeite an einem virtuellen Museum und hätte gern ein Script, dass es erlaubt, als auswählbar definierte Objekte mit einem Mausklick an sich heranzuholen und dann vor sich mit Ziehen der Maus zu rotieren. Klickt man abermals, soll das Objekt in seiner ursprünglichen Ausrichtung an seinen Ausgangsort. Aktuell bin ich soweit, dass vom Zentrum des Bildschirms einen Ray nach vorne schießt und getroffene Objekte, die über eine Tag als auswählbar definiert wurden, über ein Material hervorgehoben werden (Das habe ich aus einem Tutorial zu Raycast übernommen). Allerdings bin ich jetzt etwas ratlos, wie ich da weiter machen soll...ich poste mal mein Script, darin hab ich auch in Etappen reingeschrieben, was ich gerne weiter tun würde. Es wäre wirklich klasse, wenn mir jemand ein bisschen unter die Arme greift. Ich will so viel wie möglich selbst machen, aber mir fehlt da einfach noch das Hintergrundwissen zu. Liebe Grüße, Chris using System.Collections; using System.Collections.Generic; using UnityEngine; public class SelectionManager : MonoBehaviour { [SerializeField] private string selectableTag = "Selectable"; //Auswählbare Objekte werden als solche definiert [SerializeField] private Material highlightMaterial; [SerializeField] private Material defaultMaterial; //Das will ich irgendwie durch das ursprüngliche Material des jeweiligen Objektes ersetzen private Transform _selection; // Update is called once per frame private void Update() { //Wenn ein Objekt nicht vom Ray getroffen wird, hat es das default Material if (_selection != null) { var selectionRenderer = _selection.GetComponent<Renderer>(); selectionRenderer.material = defaultMaterial; _selection = null; } //Wirf einen Strahl vom Zentrum des Bildschirms aus var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; //Wenn der Strahl etwas trifft if (Physics.Raycast(ray, out hit)) { var selection = hit.transform; //Ist das Objekt auswählbar? if (selection.CompareTag(selectableTag)) { //Wenn es noch nicht gehighlighted ist, highlighte es! var selectionRenderer = selection.GetComponent<Renderer>(); if (selectionRenderer != null) { selectionRenderer.material = highlightMaterial; } _selection = selection; //Mit Linker Maustaste kann ein hervorgehobenes Objekt ausgewählt werden // if (Input.GetMouseButtonDown(0)) // { // SelectableObject obj = hit.collider.gameObject.GetComponent<SelecableObject>(); // obj.Select(transform.position + transform.forward * 0.5f, transform.position); // } } } } //Ich will, dass das default Material immer das Ursprüngliche Material des Ausgewählten Objekts ist //Die Reichweite des Rays soll auf einen näheren Bereich begrenzt sein //Ein ausgewähltes Objekt wird nahe an die Kamera gezogen (Vielleicht zu einem Gameobjekt, //das vor der Kamera positioniert wird und sich mit dem Rigidbody bewegt?) //Es wird ein UI aktiviert, dass Informationen zu dem Objekt anzeigt //Dort kann es mit der Bewegung der Maus rotiert werden. //Transform.Rotate(0, 10 + Time.deltaTime, 0); //Dafür muss natürlich für die Zeit, in der ein Objekt ausgewählt ist, //die Maussteuerung der Kamera deaktiviert werden //Klickt man abermals Linke Maustaste oder ESC, wird das Objekt wieder unausgewählt //es wird zu seiner Ursprungsposition bewegt in seiner ursprünglichen Ausrichtung }
  2. Jup, das habe ich gerade genau so in das Pause-Script eingebaut und es funktioniert nun mit beiden Project-Settings tadellos. Würde sagen das Problem ist gelöst
  3. Du bist mein HELD! Was mich das jetzt an Nerven gekostet hat. Ich wusste gar nicht, dass man die Zeit standardmäßig überhaupt auf 0 setzen kann, da werde ich auf jeden Fall ein Script für einbauen. Vielen Dank! Das Bier ist dir Gewiss. Am liebsten persönlich, aber du wohnst vermutlich wieder weit entfernt. Also falls du irgendwie in der Region Bamberg unterwegs bist, gerne hier, ansonsten Adresse per PN und du kriegst paar Bamberger Biere geschickt Danke ^^
  4. Hi Leute, ich arbeite für ein größeres Uni-Projekt an einem Virtuellen Museum, dass später am Desktop-PC oder in VR genutzt werden soll, um 3D-gescannte Funde/Reliefe etc. zu präsentieren. Das hat bisher wirklich super funktioniert, aber nun habe ich seit etwa einer Woche einen seltsamen Bug, der meine Arbeit komplett aufhält. Wenn ich meine Hauptszene (1) mit dem Editor öffne, startet zwar die Szene, aber der Player kann sich nicht bewegen, genau so wenig, wie die Kamera. Wenn ich dann ESC drücke, um in das PauseMenu zu kommen und dort dann auf Resume klicke, fällt der Player durch die Textur, kann sich im Fallen aber wieder bewegen und drehen. Erstelle ich einen Build, läuft die Intro-Szene (0) normal ab, die Hauptszene (1) startet dann gar nicht, stattdessen bleibt das Intro eingefroren. Ich finde keinen Fehler, es werden auch keine Errors in der Console angezeigt. In der Unity-Facebookgruppe konnte auch niemand einen Fehler finden und zwei haben das Projekt auf ihren PCs gestartet, wo es problemlos lief. Ich habe das Projekt auf verschiedenen Versionen getestet, auch Unity komplett neu installiert, aber das Problem besteht weiterhin. Ich bin verzweifelt und brauche dringend eure Hilfe. Schließlich habe ich ja Deadlines einzuhalten.... Hier der Link zum Projekt: Liebe Grüße und schonmal vielen Dank, Chris
  5. Dear Unity-Community, I'm working on a project and there occured a strange behavior on one of my model materials. All marked materials on these pictures are the same material. Sun comes from behind wall 3. As you can see, some materials are black, like they should be, others are greyish. It doesn't matter, if they are in light or not, see Object 4 or Wall 3/1. I made all models with Blender Cycles, unwraped them there, gave them Nodematerials. Imported them as obj, gave them the shown material. I really don't understand, what is happening here, please help me :/
×
×
  • Create New...