2017-05-11 20 views
0

私が作成したプラットフォームに沿ってペンギンスプライトを前後にスライドさせようとしています。私はこれを達成しましたが、スプライトを水平に戻すのは本当に苦労しています。私はフリップを取り入れるためにペンギンを動かす方法を変える必要があるかもしれないと信じています。私は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); 

} 

}

答えて

0

私はスプライトで混乱しましたが、私はそれが他の方向を向いているので、= transform.scale.zを設定すると-1スプライトを反転すると思いますので、そのはしばらくして。

1

あなたのスプライトの方向を追跡し、localScale.xまたはflipXを使用することができます。

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

別の方法を:特に最初の方法は、よりである、だけにして「エッジ」ポイントと「フリップ」に近いとき、あなたのスプライトを追跡何らかの理由でスプライトを早期に回転させると、一般的です。

関連する問題