我是一名统一的学习者。我有旋转对象的问题。我想沿z轴旋转大约40度的物体。如果物体旋转达到40度,我想要发生一些事情。这是我的代码。
foreach(Touch touch in Input.touches) {
if(touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled) {
var target = Quaternion.Euler (0, 0,-40);
transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * smooth);
if (transform.rotation.eulerAngles.z == -40) {
toggle = true;
speech = "blah blah blah";
snake = man;
}
}
}
if(transform.rotation.eulerAngles.z == -40)
代码行不起作用。所以我不知道旋转度是否达到了40度。如何检查旋转度是否达到40度?
答案 0 :(得分:0)
EulerAngles未设置为负值仅为正值(Vector3)
-if(eulerAngles.z == -40)不起作用你尝试更改值-40 - > 320
如果你想要方案
ontouch - >对象旋转 - >事件强>
试试这段代码。
float rotTime = 1f; // rotation duration
Vector3 rotValue = new Vector3(0, 0, -40f); // rotation value
void Update () {
foreach (Touch touch in Input.touches)
if (touch.phase == TouchPhase.Began) OnTouchEvent();
}
void OnTouchEvent()
{
StopCoroutine("rotationCoroutine");
StartCoroutine("rotationCoroutine");
}
IEnumerator rotationCoroutine()
{
float startTime = Time.time;
Vector3 startRot = transform.eulerAngles;
Vector3 endRot = startRot;
endRot += rotValue;
while (Time.time - startTime <= rotTime)
{
transform.eulerAngles = Vector3.Slerp(startRot, endRot,(Time.time - startTime) / rotTime);
yield return null; // wait 1 frame
}
//rotation end
MyAction();
}
void MyAction()
{
Debug.Log("rotation end");
//toggle = true;
//speech = "blah blah";
//snake = man;
}
祝你好运:D