投稿記事

2019年 05月の記事 (4)

Heliodor 2019/05/28 22:35

イラスト練習中

いつものイラストシリーズです。
一応フォロワー以上で。

フォロワー以上限定無料

まずは無料プランで様子見を。 お気軽にフォローしてみて下さい。

無料

【 500円 】プラン以上限定 支援額:500円

このバックナンバーを購入すると、このプランの2019/05に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Heliodor 2019/05/24 21:23

続・物理演算

前回の続きです。
最近は色々と物理演算(Box2D)のテストみたなことをやってました。

昔すこし触ったBullet Pysics で試してみようかとも思ったのですが、今回の触手であれば2Dで十分だなという事に気づき、結局 Box2D に戻りました。

おさらいですが、現在作っている触手の構造としては、空中に適当な物体(Static)を配置し、そこから10個程度の棒(Dynamic)をダラリとぶら下げる、というものです。
本体と棒の接続には b2RevoluteJoint という回転ジョイントを使い、棒同士はそれぞれ b2WeldJoint で弾力を持って固めてあります。

本体との接続部にだけ b2RevoluteJoint を使っているのは、このジョイントにモーター機能があるからです。
回転速度と最大トルクを指定して EnableMotor(true) で電源を入れるとクルクル回ってくれます。

棒同士を b2WeldJoint で固めてあるのは、棒と棒がある程度の弾力を持って左右に振れてほしいからです。
b2WeldJoint には referenceAngle というパラメータがあるので、それで指定した角度を中心ちとしてユラユラ振れてくれますし、外力がなくなれば自然と referenceAngle な角度に戻ります。良い感じです。

しかし b2WeldJoint だと接続角度の範囲が指定できないんですよね。力がかかればどれだけでも曲がってしまうという……。
その点 b2RevoluteJoint では lowerAngle と upperAngle で範囲が指定できますので、こちらの方が目的に適っているという気もします。どちらがふさわしいか等、まだまだ研究が必要ですね。


ところで、ライブラリを見たら b2MotorJoint という(名前的には)その物ズバリな奴があったので、中心に置いてあった b2RevoluteJoint の代わりにそれを入れてみたのですが、完全に想定外の動きをしたんですよねコレ。???と思ってよくよくドキュメントを読んでみると、

A typical usage is to control the movement of a dynamic body with respect to the ground.

と書いてありまして、地面に対するボディの制御に使うとかっていうのは、思ってるようなモーターとは違うのでは…?となり、結局 b2RevoluteJoint のモーター機能に戻りました。調べてみると、これは例えば波の上でゆらゆら動き続けるといった動きを実現したりするのに使うみたいですね。紛らわしいッ。



そんなわけでいろいろ試行錯誤しているのですが、プログラムを書き換えてそのたびにゲームを起動して動きをチェックする、というのも面倒になりまして、楽をするために触手専用アニメーションエディタを作ろうという結論に達しました。
触手のある敵は他にもいっぱい作るし、今後もエロゲー作るのに触手エディタは決して無駄にならないハズ。

さしあたり現在製作中のゲームで動かしている触手くん(仮)の編集をするのが目的なので、エディアもゲームエンジンをそのまま利用して作るのが自然だろうと思いまして、簡単なエディタを組んだんです。それでとりあえずそのエディタの世界に触手くん(仮)を置いてみたのですが、なんせ触手くん(仮)のコードを丸ごと移植したので、エディタの中で勝手に移動するんです。

オーラとか白濁液とかもまき散らすし……。
放っておくとプレイヤーを探して勝手にエディタから出ていくんでよこいつ。けしからんヤツです。
なのでエディタの中心にむりやり押さえつけて動かないようにしています。

行動パターンのなかに「エディタモード」を追加しておとなしくさせようかとも思ったのですが、エディタ専用の行動パターンを入れるというのもなんだかバカらしいのでやめておきました。

というか、本来なら触手くん(仮)の行動プログラムとアニメプログラムを分離しておいて、エディタではアニメの部分だけを編集させるべきなのですが、割と初期の頃に作り始めた敵なうえにいろいろと仕様変更が重なって、行動とアニメが完全に一体化したソースコードになっていたのです……。


果たして理想の触手が生まれる日は来るのか。
ひたすら触手をうねうねさせるという他人から見たら正気を疑われる実験は続く。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Heliodor 2019/05/17 18:16

物理演算

以前にもチラッと書きましたが、今作は描くのが大変な触手をプログラムで動かしています。

一本一本描いていたら永久に終わらない触手だらけの敵も楽ちんです。

このタコみたいな敵は簡易的な物理演算でそれっぽく見えるように動かしていますが、より複雑な動きを作るために本格的な物理演算を導入してみました。

これで触手を振り回せば鞭みたいな攻撃モーションが簡単に出来るはず!


で、実際に動かしてみました。
開発中の画面(動画)なので閲覧はフォロワー以上で!

フォロワー以上限定無料

まずは無料プランで様子見を。 お気軽にフォローしてみて下さい。

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Heliodor 2019/05/07 22:24

自作ツール(PathGet)

プログラム話です。

自分がゲームを作ったりするときに、自分のために作って自分だけが使っているというツールがあるのですが、今回はそのうちの一つを紹介することにします。
どんなツールかというと...

ファイルのパスを取得していろいろいじくりまわす

という、ただそれだけの物です。

文字列として取得したファイル名に対して、ディレクトリ(フォルダ)部分を削除とか、拡張子部分を削除とかという操作を、リスト内の全てのファイル名に対して一括で行うというだけです。もちろん実際のファイルやフォルダがリネームされるわけではありません。

というのも、例えば100個ぐらいサウンドファイルがあったとして、それを全部リスト化したい……というような場合があったりしますよね?(よね?)


当然フォルダ内のファイル名を全部手動で入力するのは面倒です。
ファイル数個ぐらいだったら、エクスプローラでファイルを Shift + 右クリックすれば、隠しメニュー「パスのコピー」が出てくるので、それでコピーとかできますが(これは本当に隠しメニューなので、普通に右クリックしても出てきません)これが何十個もあるとやってられないです。

で、ツールとかを探せば、ファイルをドロップするだけでファイルパスを取得!というのはたくさんあるのですが、取得した後に、さらに編集できるようなものってなかなかないんですよね。あっても無駄に高機能だったりして。


というわけで、次のようなツールが欲しかったのです。

・見た目はメモ帳。
・ファイルやフォルダをドロップするとパス行が追加される。
・拡張子の削除や、ファイル名だけの抽出、引用符で囲む、などの処理が、すべての行に対して一括で実行できる。
・ソートもできちゃう。

そんな感じで自作しました。

実にシンプルですね。
果たして需要があるか分かりませんが、一応フォロワー以上特典として公開します。

フォロワー以上限定無料

実行形式ファイル+説明テキスト

無料

【 500円 】プラン以上限定 支援額:500円

ソースコード(C#)

このバックナンバーを購入すると、このプランの2019/05に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索