HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1205
異伝イージング関数の使い方について4解決


異伝

リンク

2015/12/5(Sat) 19:28:22|NO.73451

こんにちは。
HSPのサンプルのブロック崩しにイージング関数(ease_bounce_out+ease_loop)を使おうとしているのですが、ボールのY座標を
bly = getease(ease,100)※easeはメインループの中でease+=1としています

とすると画面の下側でバウンドした後、画面の上側でバウンドする…を繰り返してしまいます。 geteaseの使い方があまりわからないのでどのようにしたらいいか教えてください。



この記事に返信する


774

リンク

2015/12/7(Mon) 20:35:13|NO.73494

イージング関数は知らないですが、関数自体は正しく動作しているようにも見えます。
異伝様の望む結果が判らないので、その結果の何が問題なのかがまず判りません…

もし、まだご覧になっているなら
こういう事をしたい、こうしてみた、実際はこうなってしまった。
をできるだけ具体的に書いて頂けると、何か回答できるかも知れません。



GENKI

リンク

2015/12/8(Tue) 00:37:37|NO.73506

事前にseteaseで数値の範囲を設定し、geteaseで最大値に対する現在の値を設定して使用します。

setease p1,p2,p3
val = getease(p4,p5)
と指定すると、valはp1〜p2の範囲の値になります。
あとは…うまく言葉にできないのでサンプルどうぞ。

; イージング関数の設定 setease 150,500, ease_quad_in d = 1 ; メインループ *main ; 画面をクリア redraw 1 : await 33 : redraw 0 : color 255,255,255 : boxf : color : pos 0,0 ; イージング値の取得(整数) bly = getease(ease,100) ; 結果描画 pos bly,100 : mes "●" pos 0,0 mes "" + ease +" / " + 100 mes "bly = " + bly ease+=d if ease>=100 : d = -1 if ease<=0 : d = 1 goto *main
バウンドする動きをするのは、setease命令でease_bounce_...を指定しているからではないでしょうか。
seteaseをヘルプで調べると下のほうにサンプルが表示されるので、それを見たほうがいいかと思います。
ease_test2.hspとかわかりやいです。



GENKI

リンク

2015/12/8(Tue) 00:46:20|NO.73507

グラフ書いたほうがなにしてるのかわかりやすいかも。

; 初期値 numStart = 150 ;出力される最小値 numEnd = 400 ;出力される最大値 ; 0ライン line 0, numStart, 640, numStart ; イージング関数の設定 setease numStart, numEnd, ease_quad_in color 0, 0, 0 : gosub *plotline setease numStart, numEnd, ease_quad_out color 255, 0, 0 : gosub *plotline setease numStart, numEnd, ease_bounce_in color 0,255, 0 : gosub *plotline setease numStart, numEnd, ease_shake_in color 0, 0,255 : gosub *plotline stop ; 描画 *plotline pos 0,0 x = 0 repeat 640 y = getease(x,640) line x,y x++ loop return



異伝

リンク

2015/12/8(Tue) 20:21:53|NO.73519

774さん、質問するときどのように書けばいいか丁寧に教えていただきありがとうございます。
GENKIさん、サンプルを書いてくださりありがとうございます。おかげで画面の上下でバウンドするなぞが解けました。
がんばってプログラムを完成させます。



ONION software Copyright 1997-2023(c) All rights reserved.