在 Unity3D 上使用精灵时的 2 个问题

2 problems when working with sprites on Unity3D

我需要将面朝下卡片的精灵替换为另一张(正面朝上的卡片)精灵。

这是面朝下卡片附带的 C# 脚本:

using UnityEngine;
using System.Collections;

public class Entra : MonoBehaviour
{

    public float velocidadDeRotacion = 100.0f;
    public Sprite CartaBase;
    public Sprite CartaDelantera;

    private bool clickActivado = false;
    public void OnMouseDown()
    {
        clickActivado = true;        
    }

    // Use this for initialization
    void Start ()
    {

    }

    // Update is called once per frame
    void Update ()
    {

        if (clickActivado)
        {
            transform.Rotate(Vector3.up * Time.deltaTime * velocidadDeRotacion);
            if (transform.eulerAngles.y >= 90)
            {
                SpriteRenderer Carta;
                Carta = GetComponent<SpriteRenderer>();
                if (Carta.sprite == CartaBase)
                {
                    Carta.sprite = CartaDelantera;
                    transform.Rotate(Vector3.up * Time.deltaTime * velocidadDeRotacion);
                    if (transform.eulerAngles.y >= 0 && transform.eulerAngles.y <=10)
                    {
                        transform.eulerAngles = new Vector3(0, 0, 0);
                        clickActivado = false;
                        return;
                    }

                }
                clickActivado = false;
                return;
            }

        }

    }
}

如你所见,我在点击卡片时旋转卡片,当角度达到 90º 时我停止旋转并更改精灵,从 CartaBase 到 CartaDelantera。

现在我有两个问题。

  1. 当 sprite 的角度为 1º 或更大时,图像会中断。我输了 图像的右半部分从中心到右边界,以及 我不明白为什么。
  2. 使用 VS2013 作为调试器,我一步一步地演练,什么时候 它达到

if (Carta.sprite == CartaBase)

它直接跳到

clickActivado = false;

所以,显然它不是"seeing"卡片使用的精灵。为什么???

我正在使用 this 脚本作为精灵更改的参考。

我解决了第二个问题。它一直在我面前。

正如我所说,我使用这段代码作为示例。这个很棒的答案没有向你解释的是,一旦你编译了代码,如果你 select 精灵回到层次结构,你会注意到有两个变量可用,对应于你在代码中声明的变量。

我的大错误是没有理解下面的内容,在示例中@Savlon 说:“// 将你的第一个精灵拖到这里”,我按字面意思理解为 "drag your sprite to the VS"。是的,我知道,我是个大笨蛋,请不要说...

我需要做的是将 sprite 拖到 THE Inspector,再回到 Unity3D 上。更具体地说,是精灵上可用的新变量。

我还解决了第一个问题,方法是将 Z 轴上的相机设置为与精灵宽度一样多的单位。问题是相机离精灵太近了,所以当精灵转动时它在相机后面,因此精灵的那部分没有被渲染。 @Nosekills 的最初建议为我指明了正确的方向。

感谢@Nosekill 和@hexagonius 提供的帮助。