したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

アイワナ作成に役立つテクニック紹介スレ

1名無しさん:2016/06/16(木) 19:40:32 ID:bp5PiC0g
アイワナを制作する上で役に立つテクニックを紹介していくスレです。
コード以外にもスプライトに関することやexeの容量を減らす方法などを
みんなで共有してより質の良いアイワナを目指しましょう。
他のスレでこのようなテクニックを書くのはスレチだよなと思い
建ててみました。
(アイワナボスコードのスレと少し被っているかとは思いますが)
初めにいくつか紹介をします。

2名無しさん:2016/06/16(木) 19:51:19 ID:bp5PiC0g
「Execute Codeのテクニック 名前を付ける」

Execute Code(皆さんがいつもコードを打っているやつです)に名前を付けることができます
通常何もしなければ「Execute a piece of code」と表示されますが

コードの1行目に
///name
と「///」の後に(必ず3本打ってください)
付けたい名前を入力すると名前が変更します

中身の処理が分かるように名前を付けてあげましょう
(8.0では出来るかわかりません)

3名無しさん:2016/06/16(木) 19:58:37 ID:bp5PiC0g
「スプライトの設定でexeの容量を減らす」

スプライトのBounding Boxの設定をPreciseにするとexeの容量が増えます
複雑な形状なものほどexeの最終的な容量が増えていくみたいです

これは事前にあたり判定を計算して
ゲームの処理を軽くするためにしているようです(あくまで予想)

あたり判定を使わないスプライト 厳密なあたり判定をしなくてもいいスプライトは
Precise以外のものにするとよいでしょう
(セーブのスプライトのあたり判定も四角にすることをおすすめします)

4名無しさん:2016/06/19(日) 00:22:34 ID:bp5PiC0g
「Proでしか使えないclampとlerpをliteで使えるようにする」

何故かliteで使えないlerpとclampですが
liteでも使えるようにしてみましょう

lite_lerpとlite_clampのScriptを作成します

lite_lerpの中身
return argument0 * (1 - argument2) + argument1 * argument2;

lite_clampの中身
return min(argument2, max(argument0,argument1));

また0から1の間にしたいということが多々あると思いますので
clamp01というのも作っておくと便利です

lite_clamp01の中身
return min(1, max(argument0, 0));

(ここでlite_clamp(argument0, 0, 1)にしないのは処理速度を速めるため)

引数の順番も同じのはずなのでこれで同じように使えます

因みに検証はしていませんが、自作したlite_clampなどより
proのclampのほうが処理は速くなると思います
(因みに計算方法は全く変わらないはず)

5名無しさん:2016/06/20(月) 03:21:44 ID:Shy6TwL6
>>4
clamp()、lerp()とは一体どんなものなのでしょう?

6名無しさん:2016/06/20(月) 23:42:01 ID:bp5PiC0g
>>5
正直人によってはif文でいいじゃんって思うかもしれませんが
clampは第一引数の値を 第二引数 第三引数 の値の間に丸めます

clamp(20, 5, 10)と指定した場合

もし20が5未満だと5になり
20が10より大きいと10になります

よって今回帰ってくる値は10になります

if文に置き換えると

_val = 20;

if(_val > 10)
{
_val = 10;
}

if(_val < 5)
{
_val = 5;
}

と同等の処理をやっています

※因みに・・・
GMSのシェーダーはシェーダーのバージョンが低いためにif文が使えません(正直使えないと厳しい)
なのでGMSでシェーダーを将来使いたいと思っている人はclmapを使えるようにしてください


lerpは第一引数 第二引数の値を 第三引数の値によって線形補間をします

例えば

lerp(0, 10, t)

tが0だった場合 0が帰ってきます
tが1だった場合 10が帰ってきます
tが0.5だった場合 5が帰ってきます
tが0.2だった場合 2が帰ってきます

このように0と10の間の値をとってこれるわけです

で わかりますか?

7名無しさん:2016/06/21(火) 05:12:30 ID:Shy6TwL6
>>6
なるほど…?

clampは最大値と最小値に収めることが出来る…
速度補正とかに応用できそうな気がします
使い方によってはとても便利そうですね…!

そしてlerpは…線形補間…
線分を内分、外分するようなものでしょうか
lerp(5,10,t)でt = 2だった場合、15が返ってくる…そんな感じですかね?

なんだか微妙な理解でスミマセン…w

8名無しさん:2016/06/21(火) 07:05:24 ID:bp5PiC0g
>>7
lerpに関してはその理解で問題ないはずです

9名無しさん:2016/06/26(日) 23:27:35 ID:bp5PiC0g
加減速について
まぁ調べれば式については出てくるのですが一応

lerpをつかって加速 減速 又はその両方をオブジェクトの動きにつける方法を今回は教えます

まずは加速も減速もついていないパターンをlerpを使って作ってみます

[Create Event]
_t = 0;

x = 100;
y = room_height/2;

_from = 100;
_to = room_height - 100;


[Step Event]
_t += 1 / room_speed * 3; //studioならdeltaTimeでもok
_t =clamp(0, 1, _t);
x = lerp(_from, _to, _t);

これで加減も減速も無い 言わば「基本形」が出来ました
ここに加速や減速を付けていきます
基本的にはlerpの中のtの形を変えるだけでいろんな動きをさせることが可能になります



下の式は 2次関数や3次関数のグラフを使えば出てきます
正直のところなんでこんな式になるのか解説するのが面倒なので省略します

加速:x = lerp(_from, _to, _t * _t); //_t * _t * _t * _tにすると加速の付き方が変わります
減速:x = lerp(_from, _to, _t * (2 - _t));
加減速:x = lerp(_from, _to, _t * _t * (3 - 2 * _t));

109:2016/06/29(水) 00:57:34 ID:bp5PiC0g
訂正します

_to = room_height - 100;



_to = room_width - 100;

すみません


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板