我的问题是当我实例化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之间切换
我希望你理解我的意思。请帮忙:))
答案 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,非均匀刻度和翻转是致命的。使用多个精灵并在它们之间切换。