之前看到网上有个NGUI的卡牌翻转效果,试了一下还可以,但是没有UGUI的,所以就做了UGUI的。这是那个前辈的博客地址,想看的可以看一下:https://www.bobsong.net/486.html。UGUI界面设置:两个图片放在一起(重叠),一个正面一个反面。再创建一个按钮。下面只是基本功能,如果有特殊的要求,就自己融汇变通一下。
下面步入正题看代码:
private Quaternion T; private Quaternion V; public GameObject A;//正面 public GameObject B;//背面 //public GameObject C; private bool bol = true; void Start() { B.transform.rotation = Quaternion.Euler(0, 90, 0); } public void Init(){ A.transform.rotation = Quaternion.Euler(0, 0, 0); B.transform.rotation = Quaternion.Euler(0, 90, 0); } void Update() { //以下两行都是让他绕自身旋转 //A.transform.Rotate(new Vector3(0, 90 * Time.deltaTime * 2.5f, 0)); // A.transform.Rotate(Vector3.down,3); } public void BtnClick() { if (bol) { // Init(); InvokeRepeating("BE", 0, 0.02f); CancelInvoke("BD"); } else { //Init(); InvokeRepeating("BD", 0.5f, 0.02f); CancelInvoke("BE"); } } private void BE() { // C.transform.GetComponent<Button>().enabled = false; T = Quaternion.Euler(0, 90, 0); V = Quaternion.Euler(0, 0, 0); A.transform.rotation = Quaternion.RotateTowards(A.transform.rotation, T,4f); if (A.transform.eulerAngles.y > 89 && A.transform.eulerAngles.y < 91) { B.transform.rotation = Quaternion.RotateTowards(B.transform.rotation, V,4f); bol = false; // C.transform.GetComponent<Button>().enabled = true; } } private void BD() { //返回动作 // C.transform.GetComponent<Button>().enabled = false; T = Quaternion.Euler(0, 90, 0); V = Quaternion.Euler(0, 0, 0); B.transform.rotation = Quaternion.RotateTowards(B.transform.rotation, T, 4f); if (B.transform.eulerAngles.y > 89 && B.transform.eulerAngles.y < 91) { A.transform.rotation = Quaternion.RotateTowards(A.transform.rotation, V, 4f); bol = true; //C.transform.GetComponent<Button>().enabled = true; } }