2017-05-12 18 views
-2

私はUnity3Dでコーディングしています。私のジャンプが1.533287を超えると、私の最大健康状態の半分が100になるようにする必要があります。c#Unity3D Special Fallfallage

私の問題は、プレイヤーがダブルジャンプして、ジャンプの開始場所よりも高いプラットフォームに上陸することになっていることです。

} 
    void Start() 
{ 

} 
public int doubleJump = 0; 
public float speed = 6.0F; 
public float jumpSpeed = 8.0F; 
public float gravity = 20.0F; 
public int health = 100; 
public float maxHeight; 
public float height; 
public int maxHealth = 100; 

private Vector3 moveDirection = Vector3.zero; 
// Update is called once per frame 
void Update() 
{ 

    CharacterController controller = GetComponent<CharacterController>(); 
    if (controller.isGrounded) 
    { 
     moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, 
     Input.GetAxis("Vertical")); 
     moveDirection = transform.TransformDirection(moveDirection); 
     moveDirection *= speed; 
     if (Input.GetButtonDown("Jump")) 
     { 
      moveDirection.y = jumpSpeed; 
     } 
     doubleJump = 0; 
    } 
    if (!controller.isGrounded) 
    { 
     if (doubleJump == 0) 
     { 
      if (Input.GetButtonDown("Jump")) 
      { 
      moveDirection.y = jumpSpeed; 

      doubleJump = 1; 
      } 
     } 

    } 
    if (maxHeight < height) //This sets the maximum height 
    { 
     maxHeight = height; 
    } 
    height = transform.position.y; 

    moveDirection.y -= gravity * Time.deltaTime; 
    controller.Move(moveDirection * Time.deltaTime); 
} 
+0

あなたの問題に質問はありませんでした。 – Hristo

+0

実際の問題は何ですか?あなたが落下損傷を主張する同じ距離の上に安全なジャンプを上げれば、プレーヤーは負傷していますか?その場合は、距離がしきい値を超えている場合は、適切な軸の開始値が終了値よりも大きいことを確認するだけです。 – CDove

答えて

0

あなたのプレーヤーの剛体を使用するようにコードを修正します。

たとえば、プレイヤーのvelocity.yがポジティブであれば、彼は上に移動します。 プレーヤーのvelocity.yがネガティブにある場合、それは落ちていることを意味します。

velocity.yが一定値以下になると、落下するようにします。 そのようにすれば、プレイヤーがプラットフォームに向かってジャンプを倍増させると、velocity.yに着地するときに小さな負の数になる可能性があります。しかし、彼らがその高いプラットホームから飛び降りた場合、彼らはより長い負の速度を意味するより長い立ち下がり時間を有するであろう。

ここでは例を挙げていますが、実際にどのようなスケールで作業しているのかわからないので、シーンの数値が不正確かもしれません。

あなたのプレイヤーはプラットフォームに向かって二度ジャンプし、最大の高さに達するとvelocity.yは0になります。 velocity.yが落ち始めると、これは、あなたのプレーヤーが着陸すると、負の速度を持つことを意味します。 -5としましょう。

あなたはあなたのコードを作ることができますが、あなたのプレイヤーはしばらくの間、低下しているのであれば、彼らはダメージを秋取ると思い

if(playerRigidBody.velocity.y <= -10) 
{ 
    FallDamage(); 
} 

に似た何かを言います。しかし、あなたが-5の速さであなたのプラットホームに着陸したときから、彼らは墜落のダメージを受けないでしょう...そして、彼らがプラットフォームから飛び降りて、その速度以下の地面に着陸すれば、 。

この情報を参考にしてください。