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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0601
CORO3es_adirで設定した動きを停止させるには3解決


CORO3

リンク

2022/6/1(Wed) 22:39:08|NO.96535

標準スプライト機能の、es_adirなどで設定した動きを、停止させる(キャンセル)方法はありますか?
上からオブジェクトを降らせて、積もっていくようなものを作るときに、es_adirで下方向に動かし始めたあと、
画面下部や、他のオブジェクトに接触したら、その座標に止めようとしています。

試行錯誤して、es_aposで、無理矢理X,Y増分値を0にすることで止められたのですが、
これだと、スプライトを表示する限り、フレーム単位で無駄にes_aposの処理が積み重なってしまい、
将来的に処理速度に影響がでそうです。

止めたいスプライトを消して、再度es_setするとかしないといけないのでしょうか。



この記事に返信する


kの字

リンク

2022/6/2(Thu) 07:40:31|NO.96536

再度es_adirにて移動速度を0%にするか、es_setにて移動値を0にしてみてください。



kの字

リンク

2022/6/2(Thu) 19:24:30|NO.96538

再度es_setで停止、es_adirで速度を0にする、移動する、
で処理速度に違いがあるのかを計測してみました。
結果どれも大体同じ数値になりましたので、スプライトは動こうと動くまいと処理速度に違いはないようですね。



#include "hsp3dish.as" es_ini 10000,100,360 buffer 2 es_size 32,32 es_pat 0,0,0,0,2 gsel 0 repeat 10000 es_set cnt,320,240,0 ;スプライトを1万個セット es_adir cnt,rnd(360),rnd(50)+10 ;スプライトをランダム方向にランダムな速度移動 loop ;^榮粟瀋蠅魄榮安度0に書き換え。 ; repeat 10000 ; es_adir cnt,rnd(360),0 ;速度を0に再設定 ; loop ;▲好廛薀ぅ箸鮑謄札奪箸薫榮鮎霾鵑鬟螢札奪 ; repeat 10000 ; es_set cnt,320,240,0 ;スプライトをセットしなおし、移動設定をリセットする ; loop タイマー=gettime(7)+gettime(6)*1000 repeat 300 ;秒間60フレームを5秒間スプライトを表示 redraw 0 boxf:es_draw await 1000/60 redraw 1 loop redraw 0 boxf:es_draw color 255,0,0 pos 0,0:mes (gettime(7)+gettime(6)*1000)-タイマー redraw 1 stop



CORO3

リンク

2022/6/2(Thu) 20:24:58|NO.96539

>kの字さん
わざわざ検証までしていただき、ありがとうございました!

es_adirとかes_aposを実行したら、ESI_SPDXやESI_SPDYの値が書き換わるので、
移動量が0なら処理はされない動きのようですね。
安心して、es_adirで移動スピードを0%にすることで対応できます。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.96535への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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