Ich finde dieses Skript für Pinch Zoom aber das ist für Kamera Zoom in und out bitte sagen Sie mir, wie es für Objekte funktioniert und wichtiger ist für einzelne Objekte bedeutet es, wenn Ich möchte Würfel skalieren, dann wird nur Würfel gleichzeitig nichts anderes skaliert. und wenn Sphäre dann nur Sphäre danke. hier Code:Wie skaliere ich Objekte einzeln mit Pinch Zoom
using UnityEngine;
{
public float perspectiveZoomSpeed = 0.5f; // The rate of change of the field of view in perspective mode.
public float orthoZoomSpeed = 0.5f; // The rate of change of the orthographic size in orthographic mode.
void Update()
{
// If there are two touches on the device...
if (Input.touchCount == 2)
{
// Store both touches.
Touch touchZero = Input.GetTouch(0);
Touch touchOne = Input.GetTouch(1);
// Find the position in the previous frame of each touch.
Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;
// Find the magnitude of the vector (the distance) between the touches in each frame.
float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
float touchDeltaMag = (touchZero.position - touchOne.position).magnitude;
// Find the difference in the distances between each frame.
float deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag;
// If the camera is orthographic...
if (camera.isOrthoGraphic)
{
// ... change the orthographic size based on the change in distance between the touches.
camera.orthographicSize += deltaMagnitudeDiff * orthoZoomSpeed;
// Make sure the orthographic size never drops below zero.
camera.orthographicSize = Mathf.Max(camera.orthographicSize, 0.1f);
}
else
{
// Otherwise change the field of view based on the change in distance between the touches.
camera.fieldOfView += deltaMagnitudeDiff * perspectiveZoomSpeed;
// Clamp the field of view to make sure it's between 0 and 180.
camera.fieldOfView = Mathf.Clamp(camera.fieldOfView, 0.1f, 179.9f);
}
}
}
}
Logik eines solchen Prozesses wäre: 1. Bei der ersten Berührung markieren Sie das Objekt zu skalieren (Raycasts und Treffer suchen) in einer Variablen wie 'markedGameObject'. 2. Verwenden Sie Ihren Code, um 'DeltaMagnitudeDiff' zu bestimmen. 3. Löschen Sie die vollständige 'if -else'-Anweisung aus Ihrem Code. 4. Ersetzen Sie es durch etwas wie 'markedGameObject.localScale = deltaMagnitudeDiff'. 5. Passen Sie die Geschwindigkeit der Skalierung an Ihre Bedürfnisse an. Sorry, ich habe keine Möglichkeit, es zu testen, aber stellen Sie eine Frage, wenn Sie es versuchen :) –
Sie haben Recht, aber ich bin noob in Skripting, wenn Sie den Code für mich bearbeiten können, ich bin Ihnen wirklich dankbar. und danke für deinen Vorschlag :) –