2017-12-27 8 views
0

私はプラットフォームに当たったときにジャンプするプレイヤーを持っています。落書きのようなもの。スコアは、y軸で移動した距離に基づいています。問題は、プレイヤーがジャンプすると、距離値(スコア)が増加するが、プレイヤーがプラットホームに戻ったとき、距離値が減少し、スコアも減少することである。私はスコアが減少するのを止めたい。あなたが到達した最大高さを超えて行けば、最大高さと更新のみスコアを設定し逆方向に移動すると、プレイヤーの距離値が減少しますか?

public GameObject player; 
float beginPos; 
float curPos; 
public int Multiplier; 

void Start() { 
    beginPos = player.transform.position.y; 
} 

void Update() { 
    curPos = player.transform.position.y - beginPos; 
    int Distance = Mathf.RoundToInt(curPos * Multiplier); 
    Debug.log(Distance); 
} 
+0

彼がジャンプしているかどうかを示すプロパティをプレイヤーに追加できますか?もしそうなら、スコアを差し引くことはできません。 – MushyPeas

+0

頂点のような追加の変数が必要な場合や、その周りに計算を組み立てたい場合は、 – Yepher

+0

プレーヤーは絶えずジャンプしています!動きはありません。彼はプラットフォームに触れ、+ y方向に飛び跳ねる。彼はプラットフォームを逃し、ゲームオーバーです。他のアイデア?私は別の変数、距離を格納し、以前の値と比較するmaxDistを作ろうとしましたが、動作させることはできません。 –

答えて

4

:ここにスクリプトがあります。

float beginPos; 
float curPos; 
public int Multiplier; 
float maxHeight; 
void Start() { 
    beginPos = player.transform.position.y; 
    maxHeight = beginPos; 
} 
void Update() { 

    curPos = player.transform.position.y - beginPos; 

    if(curPos > maxHeight) 
    { 
     int Distance = Mathf.RoundToInt(curPos* Multiplier); 
     maxHeight = curPos; 
     Debug.log(Distance); 
    } 
} 
+0

プレーヤーが絶えず上がるのでmaxHeightを設定できません!それは姿勢が変わり続けることです。 –

+0

私はあなたが誤解していると思います。この場合、 'maxHeight'はプレイヤーが到達した最高点を単に記憶しているだけです。現在のプレイヤーの位置が 'maxHeight'を上回っている場合、スコアは更新されており、 'maxHeight'は現在の位置に設定されています。 – Equalsk

+1

WORKED!働いた!どうもありがとうございます!別の変数を使用して行く方法でした。ありがとうございました!!!! –

0
void Update() { 
    curPos = player.transform.position.y - beginPos; 
    if (curPos > 0) { 
     distance = Mathf.RoundToInt(curPos * Multiplier); 
    } 
} 
+0

働かない。値は依然として減少します。参照のために、プレーヤーは(0,0,0)にとどまっていません。彼は絶えず動いている。 –

関連する問題