Files
TaiWan/Assets/Roaming/Extenders/ModelPlayerEx/Scripts/ModelController.cs

101 lines
3.2 KiB
C#
Raw Normal View History

2025-10-31 15:20:38 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ModelController : MonoBehaviour
{
public Transform imgModel;
public GameObject model; // Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
public Transform cameraTransform;
public float rotateSpeed = 2f; // <20><>ת<EFBFBD>ٶ<EFBFBD>
public float scaleSpeed = 0.1f; // <20><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
public float maxScale = 5f;
public float minScale = 1f;
public static bool CanControl = true;
private Vector3 oldPosition;
private Vector3 oldRotation;
// <20><>תʹ<D7AA>ñ<EFBFBD><C3B1><EFBFBD>
Vector3 mPrevPos = Vector3.zero;
Vector3 mPosDelta = Vector3.zero;
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
Vector2 finger1Position;
Vector2 finger2Position;
float scroll;
float currentScale = 1f;
Vector3 tmpPos;
bool isTouchDown;
bool isFirst = true;
float x, y;
private void Update()
{
if (!ModelPlayerEx.Instance.IsDetailShow && CanControl &&
model != null && ModelPlayerEx.Instance.ModelSeted)
{
if (Input.GetMouseButton(0) || (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved))
{
//if (isFirst)
//{
// isFirst = false;
// mPrevPos = Input.mousePosition;
//}
//mPrevPos = Input.mousePosition;
//mPosDelta = Input.mousePosition - mPrevPos;
x = Input.GetAxis("Mouse X") * rotateSpeed;
y = Input.GetAxis("Mouse Y") * rotateSpeed;
model.transform.Rotate(Camera.main.transform.up, -x * rotateSpeed, Space.World);
model.transform.Rotate(Camera.main.transform.right, y * rotateSpeed, Space.World);
}
//mPrevPos = Input.mousePosition;
if (Input.touchCount == 2)
{
Touch touch1 = Input.GetTouch(0);
Touch touch2 = Input.GetTouch(1);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָλ<D6B8><CEBB>
finger1Position = touch1.position;
finger2Position = touch2.position;
// <20><><EFBFBD>㵱ǰ<E3B5B1><C7B0>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡<D2BB><D6A1>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><C5B1><EFBFBD>
float distance = Vector2.Distance(finger1Position, finger2Position);
float previousDistance = Vector2.Distance(finger1Position - touch1.deltaPosition, finger2Position - touch2.deltaPosition);
scroll = (previousDistance - distance) / 5f;
}
else
{
scroll = Input.GetAxis("Mouse ScrollWheel");
}
if (scroll >= 0.1f)
{
currentScale *= (1f + scaleSpeed);
if (currentScale > maxScale)
currentScale = maxScale;
//model.transform.localScale = Vector3.one * currentScale;
imgModel.transform.localScale = Vector3.one * currentScale;
}
else if (scroll <= -0.1f)
{
currentScale /= (1f + scaleSpeed);
if (currentScale < minScale)
currentScale = minScale;
//model.transform.localScale = Vector3.one * currentScale;
imgModel.transform.localScale = Vector3.one * currentScale;
}
}
}
}