私はユニティにかなり慣れていないので、game2D 以外のアプリケーションを作成する特別な方法でそれを使用します。そのため、UI 要素のみで作業します。やりたいことでいくつかの問題があります。指 (またはマウス) に従って回転するオブジェクトがありますが、オブジェクトは「領域」から出てはなりません。今のところ私のコードは次のとおりです。
using UnityEngine;
using System.Collections;
public class SteeringWheel : MonoBehaviour
{
public float angleMax = 90.0f;
private float baseAngle = 0.0f;
void OnMouseDown()
{
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
baseAngle = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg;
baseAngle -= Mathf.Atan2(transform.right.y, transform.right.x) * Mathf.Rad2Deg;
}
void OnMouseDrag()
{
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
float ang = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg - baseAngle;
Debug.Log("ang1 : " + ang);
ang = Mathf.Clamp(ang, -90, 90);
if (transform.eulerAngles.z >= 89 && transform.eulerAngles.z <= 271)
{
transform.rotation = new Quaternion(transform.rotation.x, transform.rotation.y, 0.7f, transform.rotation.w);
return;
}
transform.rotation = Quaternion.AngleAxis(ang, Vector3.forward);
}
}
そして、ここに問題のGIFがあります: