2016-10-30 42 views
0

大家好!我是Unity新手,嘗試創建一個2D街機遊戲,讓我的角色跳起來以一種軌跡運動的方式觸及一些東西然後掉下來。我用重力刻度等於1和move_speed 1000和rest_speed 500但是一旦我命中空間,角色就會掉下來而不是上升。對象不斷下降而不是射擊軌跡(團結)

此外,walk.IsWalk是Walking類中的一個int(只要我點擊右箭頭,將IsWalk設置爲2)。我的預期結果是,只要我們同時持有空間右箭頭鍵,角色應該沿着彎曲的運動向上移動。我不知道這裏發生了什麼,任何人都可以指點我一個方向?謝謝!

我的代碼如下:

using UnityEngine; 
using System.Collections; 

public class Jumping : MonoBehaviour 
{ 
    Rigidbody2D rb2D; 
    Animator anim; 
    Walking walk = new Walking(); 
    public float move_speed; 
    public float rest_speed; 

    void Start() 
    { 
     rb2D = GetComponent<Rigidbody2D>(); 
     anim = GetComponent<Animator>(); 
    } 

    void FixedUpdate() 
    { 
     //float xmove = Input.GetAxis("Horizontal"); 
     //float ymove = Input.GetAxis("Vertical"); 
     //var curr = new Vector2(xmove, ymove); 

     if (Input.GetKey("space")) 
     { 
      anim.SetTrigger("JumpButtonPres"); 
      rb2D.gravityScale = 1; 

      if (walk.isWalk == 2) 
      { 
       rb2D.AddForce(rb2D.position * move_speed); 
      } 
      else if (walk.isWalk == 1) 
      { 
       //rb2D.velocity += (Vector2.up * (-rb2D.velocity.x)); 
       rb2D.AddForce(-rb2D.position * move_speed); 
      } 
      else 
      {     
       rb2D.AddForce(rb2D.position * rest_speed); 
      } 
     } 
    } 

} 

enter image description here

爲rigidbody2D.AddForce

+0

「walk.IsWalk距離步行類一個bool」。這不是真的。你不能比較bool和int。如果該語句爲真,則不應編譯您的代碼。順便說一句,編輯你的問題,並把你的實際代碼,而不是你的代碼的圖片。 – Programmer

+0

對不起,我說錯了,我設置walk.IsWalk爲Int,並將其與int – CodeLover

回答

0

看來你的問題的部分代碼是,每當要添加力到你的剛體,你乘以由它所在的位置,所以通過這個我猜你的角色被放置在一個負y分量coordenate,這就是爲什麼rb2D.position * rest_speed將res超過你的玩法下降。更改爲vector2.up * rest_speed,你應該沒問題。

希望我能夠提供幫助。

  • 的Noé