我需要将面朝下卡片的精灵替换为另一张精灵(面朝上卡片)。
这是附在面朝下卡上的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。
现在我有两个问题。
if(Carta.sprite == CartaBase)
它直接跳到
clickActivado = false;
所以,显然它并没有“看到”卡片使用的精灵。为什么???
我正在使用this脚本作为更改精灵的参考。
答案 0 :(得分:0)
我解决了第二个问题。它一直在我面前。
正如我所说,我使用此代码作为示例。这个令人敬畏的答案并没有解释你的是,一旦你编译代码,如果你选择精灵回到hierchy,你会注意到两个可用的变量,对应于你在代码中声明的变量。
我的大错误是没有理解下面的内容,在示例中@Savlon说:&#34; //在这里拖动你的第一个精灵&#34;我真的理解为&#34;将你的精灵拖到VS&#34;。是的,我知道,我是一个巨大的笨蛋,请不要说出来......
我需要做的就是将精灵甩到监视器上,回到Unity3D上。更具体地说,是精灵上可用的新变量。
我还通过在Z轴上将摄像机设置为多个单元来解决第一个问题,因为精灵是宽的。问题是相机太靠近精灵了,所以当精灵转过来时它就在镜头后面,因此精灵的那部分没有渲染。 @Nosekills的原始建议指出了我正确的方向。
感谢@Nosekill和@hexagonius提供的帮助。