Unity:在 GetKeyDown 时翻转 2D 游戏对象(克隆)

Unity: Flip 2D GameObject(Clone) while GetKeyDown

我的问题是当我实例化一个 GameObject 时,它应该像我的 Player 一样翻转 但是当我左转时它只是翻转。

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;
    }

}
}

例如:我的播放器面向右侧,"Beam" 也面向右侧,但是当我的播放器面向左侧时,"Beam" 在-1 和 +1 之间切换

希望你明白我的意思。请帮忙:)

你正在更新方法中进行快速翻转:当恐龙不面对右翻转时,它疯狂地翻转!将 *= 更改为 =,它应该可以工作。或者,如果它已经缩放,则执行此操作:

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,不均匀缩放和翻转是致命的。使用多个精灵并在它们之间切换。