如果由于某种原因,声明未得到履行

本文关键字:由于某种原因 声明 如果 | 更新日期: 2023-09-27 18:26:27

我正试图让一张卡在点击时旋转180度,可以面朝上,也可以面朝下。我用的是Unity,C#。这是附在卡片上的类的代码:

using UnityEngine;
using System.Collections;
public class CardScript : MonoBehaviour {
    public float rotSpeed = 900;
    public MatchScript referenceEasy;
    private bool rotating = false;
    private bool faceUp = false;
    private bool finishedRotating = true;
    private int boardPosX, boardPosY;
    // Use this for initialization
    void Start () {
        transform.localScale -= new Vector3(.6f, .6f, 0);
        transform.localEulerAngles = new Vector3(0f, 180f, 0f);
    }
    // Update is called once per frame
    void Update()
    {
        Rotate();
    }
    void Rotate()
    {
        if (rotating && transform.eulerAngles.y >= 180 && !faceUp)
        {
            Debug.Log("ding");
            transform.Rotate(Vector3.up * (rotSpeed * Time.deltaTime));
        }
        else if (rotating && transform.eulerAngles.y <= 180 && faceUp)
        {
            Debug.Log("ding");
            transform.Rotate(Vector3.down * (rotSpeed * Time.deltaTime));
        }
        else if (rotating)
        {
            faceUp = !faceUp;
            rotating = false;
        }
    }
    void OnMouseDown()
    {
        referenceEasy.Clicked(boardPosX, boardPosY);
        if(!rotating)
        {
            rotating = true;
            faceUp = !faceUp;
            Debug.Log(rotating);
            Debug.Log(eulerAngles.y);
            Debug.Log(faceUp);
        }
    }
    public void SetReference(MatchScript m) //When a card object is instantiated by the board, it will call this function, which associates the reference
    {
        referenceEasy = m;
    }
    public void SetBoardPosition (int x, int y) //This gets called to set where in the matrix the card exists.  It's mainly as a reference for the board.  
    {
        boardPosX = x;
        boardPosY = y;
    }
}

单击时,调试日志告诉我faceUp和rotating都是真的,并且eulerAngles(在本例中,旋转)=180。然而,Rotate()中的"ding"都不是触发的,但我认为我满足了要求。谢谢你的帮助!

如果由于某种原因,声明未得到履行

您最好将这些调试语句放入实际的Rotate方法中,这样您就可以在使用它们之前看到它们是什么。

此外,要小心浮点值(就像你的角度看起来一样)。它看起来可能是180,但实际上可能是179.99999942180.00000007

您可能想要查看的另一个是角度使用的不同名称,特别是在一个地方使用transform.eulerAngles.y,在另一个地方则使用eulerAngles.y。从给定的代码中看,它们引用的是同一个实体并不明显。