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