我需要让精灵水平移动预定距离,水平翻转并返回

时间:2017-05-11 04:03:07

标签: c# unity3d sprite

我试图让一只企鹅雪碧沿着我制作的平台来回滑动。我已经实现了这一点,但是我真的很努力让精灵一旦向后移动就水平翻转。我相信我可能需要改变我制作企鹅的方法以便合并翻盖。我看到很多围绕Y轴旋转的线索,但我不知道如何合并它。当它站起来时,企鹅只是来回地朝向正x方向。该游戏在Unity上是2D,用C#编写。谢谢你的建议。 :)

using UnityEngine;
using System.Collections;

public class Enemy1 : MonoBehaviour {
private SpriteRenderer SpriteRenderer;
public float min = 2f;
public float max = 3f;
public int x = 0;
public bool facingRight = true;

 // Use this for initialization
void Start()
{

    min = transform.position.x;
    max = transform.position.x + 27;

}

// Update is called once per frame
void Update()
{
    transform.position = new Vector3(Mathf.PingPong(Time.time * 2, max - min) + min, transform.position.y, transform.position.z);

}

}

2 个答案:

答案 0 :(得分:1)

您可以跟踪精灵的方向并使用localScale.xflipX

float _prevX = 0f;
...
void Update()
{
    float newX = Mathf.PingPong (Time.time * 2, max - min);
    transform.position = new Vector3(newX + min, transform.position.y, transform.position.z);
    Vector3 scale = transform.localScale;
    scale.x = newX < _prevX ? -1 : 1;
    transform.localScale = scale;
    _prevX = newX;
}

另一种方法:跟踪你的精灵在“边缘”附近的时间点和“翻转”时间,否则如果你因为某些原因提前旋转你的精灵,那么第一种方法会更通用。

答案 1 :(得分:0)

我已经有一段时间了,但是我认为设置transform.scale.z = -1会翻转精灵,使其面向另一个方向。