【问题标题】:2 problems when working with sprites on Unity3D在 Unity3D 上使用精灵时的 2 个问题
【发布时间】:2015-02-28 02:52:04
【问题描述】:

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

这是附在正面朝下卡片上的 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作为调试器,我一步步演练,当 它达到了

如果(Carta.sprite == CartaBase)

它直接跳到

clickActivado = false;

所以,显然不是“看到”卡片使用的精灵。为什么???

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

【问题讨论】:

    标签: c# unity3d 2d sprite


    【解决方案1】:

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

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

    我的大错误是不理解以下内容,在示例中@Savlon 说:“// 将您的第一个精灵拖到此处”,我的字面意思是“将您的精灵拖到 VS”。是的,我知道,我是个大笨蛋,请不要说出来......

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多