Unity:在GetKeyDown时翻转2D GameObject(克隆)

时间:2016-11-20 19:59:43

标签: c# unity3d 2d flip

我的问题是当我实例化GameObject时,它应该像我的播放器一样翻转 但是当我左转时,它只是在转动。

using UnityEngine;
using System.Collections;

public class beam : MonoBehaviour {

public Transform firePoint;
public move dino;

void Awake()
{
    dino = GetComponent<move>();
    dino = FindObjectOfType<move>();
    firePoint = GameObject.FindGameObjectWithTag("spawn").transform;
}

// Use this for initialization
void Start () {      
}

void FixedUpdate ()
{
    transform.position = firePoint.position;
}
void Update ()
{
    if (dino.GetComponent<move>().facingRight == false)
    {
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }

}
}

例如:我的播放器面向右侧,#34; Beam&#34;面对的也是正确的,但是当我的球员面向左侧时,#34; Beam&#34;在-1和+1之间切换

我希望你理解我的意思。请帮忙:))

1 个答案:

答案 0 :(得分:3)

你正在更新方法中进行快速翻转:虽然dino没有正确翻转它就像疯了一样!改变* =到=它应该工作。或者如果它已经缩放,那么执行以下操作:

void Update ()
{
    if (dino.GetComponent<move>().facingRight == false)
    {
        Vector3 theScale = transform.localScale;
        theScale.x = Mathf.Abs(theScale.x) * -1;
        transform.localScale = theScale;
    }
}

注意:

最好使用SpriteRenderer.FlipX = true/false而非缩放。

另一个注意事项:

如果你使用batching,非均匀刻度和翻转是致命的。使用多个精灵并在它们之间切换。