2014年10月23日木曜日

Unityボタンでのジャンプ力の調整と空中での移動

アクションゲーム用のジャンプ制御を改良してみました。

  • ジャンプボタンを押しっぱなしでジャンプ力が増します。
  • 空中で左右へ移動できます
  • 二段ジャンプはできません。
  • 横移動して落下中もジャンプはできません。

接地判定は以下の記事を参考にしてください。
キャラクターコントロールクラスと地面判定の記事はこちら

以下がサンプルソースです。
public float speed =   9.0f;
public float jumpspeed = 5.0f;
private float JAMP_SPEED = 6.5f;
public float gravity = 9.0f;
private Vector3 idou =  new Vector3();
public void Start()
{
//kyo.jimen = false;//地面判定は自作しないと
}
public void Update()
{
//地面判定
if (kyo.jimen) { idou = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxisRaw ("Vertical"));
idou = transform.TransformDirection (idou);
idou *= speed;
if (Input.GetButton ("Jump")) {
idou.y = jumpspeed;
}

} else {//空中でも移動
idou.x = Input.GetAxis ("Horizontal") * speed;
if (Input.GetButton ("Jump")) {
jumpspeed= jumpspeed/2;
idou.y += jumpspeed;
}
}
idou.y -= gravity * Time.deltaTime;

rigidbody.velocity = idou;//直接加速度を設定すつ
}
//地面判定
void OnCollisionEnter(Collision collision)
{
kyo.jimen = true;
jumpspeed = JAMP_SPEED;

}
void OnCollisionExit(Collision collision)
{
kyo.jimen = false;
}

やっつけ仕事ですみません。操作性はゲームの要なので、まだまだ改良していく予定です。
シフトや論理演算を使うなど処理速度を改善できればと思います。

1 件のコメント:

  1. private Vector3 idou = new Vector3();

    コピーしてもここでエラーが出る

    返信削除