Jump to content
Unity Insider Forum

Objekt skalieren mit Raycast


thobr

Recommended Posts

Hallo 🙂

Ich hoffe ihr könnt mir helfen.

Ich habe eine VR Anwendung. In dieser interagiere ich mit Objekten mit einem Raycast. Wenn ich ein Objekt anwähle, kommen Menüpunkte wie in diesem Fall das Skalieren.
Jetzt habe ich folgendes Problem. Wenn ich das skalieren anklicke, soll das Objekt mittels links und rechts schauen größer bzw. kleiner werden.
Das geht teilweise. Nur leider nicht sehr gut, da wenn das Objekt angeklickt wird, es auf irgendeine komische Größe skaliert.

 

Könnt ihr mir vielleicht den Code so umschreiben damit er richtig funktioniert?

Hier mal der Code:

 

using UnityEngine;
using System.Collections;

public class LeftRightTest : MonoBehaviour {
	public Transform target;
	public float directionCategory;
	public float directionValue;

	public static bool objectIsActive1;
	public static bool isSkalieren1;


	void Start() {
        
        transform.LookAt(target);
    }

	void Update () {

		objectIsActive1 = V02_1_Version_Control.isSelected;
		isSkalieren1 = V02_1_Version_Control.isSkalieren;
		if (isSkalieren1)
		{
			target = V02_1_Version_Control.selectedObject.transform;

			Vector3 heading = target.position - transform.position;
			Vector2 result = AngleDir(transform.forward, heading, transform.up);
			directionCategory = result[0]/10;
			directionValue = result[1]/10;
			directionValue += 1; 

			target.transform.localScale = new Vector3(directionValue, directionValue, directionValue);
		}

	}
	
	
    //Left/Right test function
    //https://forum.unity.com/threads/left-right-test-function.31420/
	Vector2 AngleDir(Vector3 fwd, Vector3 targetDir, Vector3 up) {
		if (objectIsActive1)
		{
			Vector3 perp = Vector3.Cross(fwd, targetDir);
			float dir = Vector3.Dot(perp, up);

			if (dir > 0f)
			{
				return new Vector2(1f, dir);
			}
			else if (dir < 0f)
			{
				return new Vector2(-1f, dir);
			}
			else
			{
				return new Vector2(0f, dir);
			}
		}
		else
			return new Vector2();
	}
	
}


Hat jemand einen Vorschlag? Bin komplett am Ende und weiß nicht weiter.

Danke und LG

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 5 Stunden schrieb Cxyda83:

Sag mir was du erreichen willst und vielleicht hast du glück ^^

Okay - ich versuchs mal 🙂
 

Also mein Würfel sieht (gezoomt) bso aus:

grafik.thumb.png.2f3aac5b76b83a699bab6b75c7baf82a.png

 

Also hab ich das Skalieren symbol angeklickt. Und jetzt würde ich gerne durch Kopfbewegung (Y-Achse) den Würfel skalieren. Also derzeit ist es so das es nach links schauen größer wird, nach rechts kleiner. Theoretisch hätte ich es gerne anders rum.
Problem derzeit:
Wenn ich den Würfel anklicke, wird er sofort etwas kleiner. Also sobald ich das Symbol skalieren klicke, wird der Würfel kleiner. Ohne das ich den Kopf bewege. Das ist eigentlich das große Problem. Da es sich so sehr schwer genau skalieren lässt.

Das zweite problem das ich noch habe: Wenn ich den würfel skaliere wird er größer, und steht dann in das Objekt unten hinein. Wenn ich dann die größe bestätige, hüpft er herauf um nicht mehr im anderen Objekt zu sein. Also am besten wäre wenn er so skaliert wird, dass er ständig auf der Fläche bleibt und nicht nach unten größer wird (Hoffe das war verständlich)

LG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...