2017-06-15 11 views
0

私はこのC#スクリプトを、メインのカメラゲームオブジェクトに添付しています。このオブジェクトには、カプセルのcollider属性もあります。しかし、それは何もしていないようです。カメラを「ジャンプ」させて再び地面に落とすには、これをどのように変更/追加する必要がありますか?キーを押したときにゲームオブジェクトをジャンプさせるにはどうすればいいですか?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class Jump : MonoBehaviour { 


    [HideInInspector] public bool jump = false; 
    public float jumpForce = 1000f; 
    public Transform groundCheck; 


    private bool grounded = false; 
    private Rigidbody rb; 


    // Use this for initialization 
    void Awake() 
    { 
     rb = GetComponent<Rigidbody>(); 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground")); 

     if (Input.GetButtonDown("Jump") && grounded) 
     { 
      jump = true; 
     } 
    } 

    void FixedUpdate() 
    { 

     if (jump) 
     { 
      rb.AddForce(new Vector2(0f, jumpForce)); 
      jump = false; 
     } 
    } 
} 

可能であれば、このキーのキーをスペースキーにしたいと思いますが、キーが機能しているかどうかは問題ありません。私はまだC#を学んでいるので、解決策が明らかであれば私を許してください。この行は、最も可能性の高い問題を引き起こしている

+2

私はあなたの質問にコードがあることを理解していますが、あなたは質問の尋ね方のためにそれを書いていないと感じています。 Unityの仕組みを学ぶことをお勧めします。 [プロジェクトチュートリアル](https://unity3d.com/learn/tutorials)に従うだけで、独自のコードを書くことができます。 – Programmer

+1

押さなければならないキーを変更するには、 'KeyCode.Space'を使います。 [this](https://stackoverflow.com/a/44539475/3785314)の投稿からジャンプの例を見ることができます。あなたが層を設定し、正しい層に地面を置く方法を知らないなら、それは動作しません。 – Programmer

+0

@Programmer私は地面に地面を置きました。どこでKeyCode.Spaceを使用しますか?どのキーを使用するか設定する場所はありますか? – TrumpetDude

答えて

1

grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));` 

それは文句を言わない、適切な結果を生み出すことを2理由があります

  1. あなたの地面タイルや場所の設定を持っていませんキャラクターは「グラウンド」レイヤーに移動します。これはデフォルトではありませんが、プロジェクト設定 - >タグとレイヤーメニューから追加できます。

  2. あなたのコライダーは地面に十分接近しておらず、衝突していません。

さらに、正常に動作するはずです。

関連する問題