- ジャンプボタンを押しっぱなしでジャンプ力が増します。
- 空中で左右へ移動できます。
- 二段ジャンプはできません。
- 横移動して落下中もジャンプはできません。
接地判定は以下の記事を参考にしてください。
キャラクターコントロールクラスと地面判定の記事はこちら
以下がサンプルソースです。
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;
}
やっつけ仕事ですみません。操作性はゲームの要なので、まだまだ改良していく予定です。
シフトや論理演算を使うなど処理速度を改善できればと思います。
private Vector3 idou = new Vector3();
返信削除コピーしてもここでエラーが出る