web-dev-qa-db-ja.com

Unity 2Dジャンプスクリプト

誰もが統一された2Dゲーム用の優れたジャンプスクリプトを持っていますか?私が動作するコードは、まだジャンプにはほど遠い、飛んでいるように見えます。

using UnityEngine;
using System.Collections;

public class movingplayer : MonoBehaviour {

public Vector2 speed = new Vector2(10,10);

private Vector2 movement = new Vector2(1,1);

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    float inputX = Input.GetAxis ("Horizontal");
    float inputY = Input.GetAxis ("Vertical");

    movement = new Vector2(
        speed.x * inputX,
        speed.y * inputY);

    if (Input.GetKeyDown ("space")){
                         transform.Translate(Vector3.up * 260 * Time.deltaTime, Space.World);
                 } 

}
void FixedUpdate()
{
    // 5 - Move the game object
    rigidbody2D.velocity = movement;
    //rigidbody2D.AddForce(movement);

}
}
11
user3189504

通常、ジャンプする人はRigidbody2D.AddForce with Forcemode.Impulse。オブジェクトがY軸に一度押し込まれ、重力により自動的に落下するように見える場合があります。

例:

rigidbody2D.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);
25
Jay Kazama

上記の答えは、Unity 5以降では廃止されました。代わりにこれを使用してください!

GetComponent<Rigidbody2D>().AddForce(new Vector2(0,10), ForceMode2D.Impulse);

また、これにより、ジャンプの高さが非常にプライベートになり、スクリプト内でのみ編集可能になるため、これが私がしたことです...

    public float playerSpeed;  //allows us to be able to change speed in Unity
public Vector2 jumpHeight;

// Use this for initialization
void Start () {

}
// Update is called once per frame
void Update ()
{
    transform.Translate(playerSpeed * Time.deltaTime, 0f, 0f);  //makes player run

    if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))  //makes player jump
    {
        GetComponent<Rigidbody2D>().AddForce(jumpHeight, ForceMode2D.Impulse);

これにより、スクリプトに戻ることなく、Unity自体でジャンプの高さを編集できる場所になります。

サイドノート-上記の答えについてコメントしたかったのですが、ここにいるので私はできません。 :)

11
laszlar

剛体コンポーネントのAddforce()メソッドを使用し、剛体がオブジェクトに接続され、重力が有効になっていることを確認します。次のようなものです。

gameObj.rigidbody2D.AddForce(Vector3.up * 10 * Time.deltaTime); or 
gameObj.rigidbody2D.AddForce(Vector3.up * 1000); 

要件と一致する組み合わせと値を確認し、それに応じて使用します。それが役に立てば幸い

2
Vmanani