内容
タイトル通りですが、2Dマリオでジャンプボタンを押した時の長さでジャンプ距離が変化する可変ジャンプする処理を作りたいです。
んでも、ボタンを押した時間による処理というプログラムが作れません
知りたいこと
処理のフローは画像の通りですが。どんな数式を使えばいいのかまったく検討が付きません。
青いダイヤの処理なのですが押した長さに応じた距離の変化とはどうやって計算するのか?
*落下タイプのA,Bはそれぞれ別の速さで落下すると思うのですが、取り得ず後回しです。
調べたこと
処理をフローに起こして考えました。
落下速度は提示のvelocity.Y += gravityVelocity * (float)delta; で実現しました。
現状は単純な落下処理なのですが、数式が思いつかず実装出来ません
環境
OS:Ubuntu
Lang: C#
Godot: 4.6
using Godot;
using System;
public partial class PlayerController : CharacterBody2D
{
public float jumpVelocity = -900;
public float gravityVelocity = 1300;
Vector2 velocity;
public override void _Ready()
{
velocity = new Vector2(0,0);
}
public override void _PhysicsProcess(double delta)
{
if(Input.IsActionJustPressed("space") && IsOnFloor())
{
GD.Print("Jump");
velocity.Y = jumpVelocity;
}
if(IsOnFloor() == false)
{
velocity.Y += gravityVelocity * (float)delta;
}
if(IsOnFloor() == true)
{
// GD.Print("On Floor");
}
Velocity = velocity;
MoveAndSlide();
}
}
Dropbox Project URL: Dropbox
from Discord by amagichan00

