2017-06-15 31 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

@程序員我已將地面放在地面層。我在哪裏可以使用KeyCode.Space?有沒有地方可以設置使用哪個鍵? – TrumpetDude

回答

1

此行是最有可能導致該問題:

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

有2個原因,它不會產生正確的結果:

  1. 你沒有設置你的地磚或地方你的角色移動到「地面」層。您不會在默認情況下使用此功能,但您可以從「項目設置」 - >「標籤和圖層」菜單中添加它。

  2. 您的對撞機距離地面不夠近,不會造成碰撞。

除此之外,它應該可以正常工作。

相關問題