在Unity3D上使用sprite时遇到2个问题

时间:2015-02-28 02:52:04

标签: c# unity3d 2d sprite

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

这是附在面朝下卡上的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. 当精灵的角度为1º或更大时,图像会断裂。我输了 从中心到右边界的图像的右半部分,和 我不明白为什么。
  2. 使用VS2013作为调试器,我一步一步地进行演练 到达
  3. if(Carta.sprite == CartaBase)

    它直接跳到

    clickActivado = false;
    

    所以,显然它并没有“看到”卡片使用的精灵。为什么???

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

1 个答案:

答案 0 :(得分:0)

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

正如我所说,我使用此代码作为示例。这个令人敬畏的答案并没有解释你的是,一旦你编译代码,如果你选择精灵回到hierchy,你会注意到两个可用的变量,对应于你在代码中声明的变量。

我的大错误是没有理解下面的内容,在示例中@Savlon说:&#34; //在这里拖动你的第一个精灵&#34;我真的理解为&#34;将你的精灵拖到VS&#34;。是的,我知道,我是一个巨大的笨蛋,请不要说出来......

我需要做的就是将精灵甩到监视器上,回到Unity3D上。更具体地说,是精灵上可用的新变量。

我还通过在Z轴上将摄像机设置为多个单元来解决第一个问题,因为精灵是宽的。问题是相机太靠近精灵了,所以当精灵转过来时它就在镜头后面,因此精灵的那部分没有渲染。 @Nosekills的原始建议指出了我正确的方向。

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