2D特化エンジン Defold [初心者からOK]
■ このスレッドは過去ログ倉庫に格納されています
Construct 2ってやつだと
スクリーンにスプライト(画像)を配置すればいいだけだから
Defoldでは
atlas作って画像を登録して
collection作ってゲームオブジェクト作ってスプライト作って配置
Construct 2の無料版は制限多いしスクリプト書かなくていいのが逆に可能性を制限してるので
Defoldに期待してる
もう少し頑張る そだねー
とりあえず配置は簡単
ttps://i.gyazo.com/99897398a312e502be742441a2e3e363.png カメラの設定をまだしてないからあれだけど、この状態でf5押すと
ttps://i.gyazo.com/1584254d689535cab4931585f8294a3e.png
こんな感じのゲーム画面におなりますね とりあえず、地面を6個設置、チュートはオブジェクト1つに地面1つだったけど
オブジェクト1つに2つ入れて見た
で動かすと、まぁ2つ消えるので地面が切れるけど、いい感じだね
https://i.gyazo.com/0917df7d171111e51f9077645f2d1e14.png
ttps://imgur.com/a/M6pREQ6 チュートリアルやってて
やっていることがあっているのか混乱した
疑問が湧いたりした
先にマニュアルを一通り読んでみたくなった
だが英語だ 最初の頃の疑問は仕様とか理解してないから起こるのが結構あるから
無視してどんどん進めていった方がいいと思う
そうすっと後で、なんであんなこと疑問に思ったんだwwってなる事がおおいし
分かってくる とりあえずカエルさんが走ったwwww
ttps://imgur.com/a/2cEM51i コンパイルエラーとかの行番号がわかんないじゃないの
プンプン 実行時エラー
ttps://i.gyazo.com/93b4b0d1f82200aa048610e87bc977d0.png
コンパイルエラー
ttps://i.gyazo.com/1d8fa49046910e67c84d563d40d54b44.png
こっちはメッセージWクリックで該当箇所に移動できる あれえ、行までは移動してくれなかったぞ
まあいいや とりあえずコリジョンのマスクとグループを設定して、カエルがちゃんと地面の上を走った
昨日は、徐々に地面にめり込んでいったけど、コリジョンの設定でOKになりました
>>22
ちなみにどんなエラー出てます?同じチュートリアルなら少しくらいならアドバイスできるかもですが
SS上げて見てください まだチュートリアル終わってないが
heroキャラクタを改造した
spineは無理なのでフリップブックアニメーションにした
heroキャラクタがちらちらするようになった
足元の衝突シェイプを球体にしたら当たり判定が不安定になるみたいだな
たまに違うメッセージ内容が来るので落ちるアニメに変える処理を実行してた
足元の衝突シェイプを立方体にしたら
同じ衝突メッセージが呼ばれ続けるようになって解決した 例題runnner
死んで、復活時に即死ぬってことがあるね
再現しにくいけど
長いとげにしたからジャンプして当たったときもスペース押したまま
落下時に二回目のとげに当たったメッセージが発生して
復活後にそのメッセージを受信して死んでいるらしい
再現しなかったり違ったらごめん >>26
当たってからスペース離した方が再現するか html5のテンプレートってどうやってる来るんだろう https://www.defold.com/ref/go/#disable
無効にする
msg.("#コンポーネント", "disable")
これで以下のコンポーネントを無効にする。
*コレクションプロキシ
*衝突オブジェクト
*Gui
*ラベル
*背骨モデル
*スプライト
*タイルグリッド
*モデル チュートリアルrunnerで
刺に当たったときにのメッセージ処理でプレイヤー死んだ処理しているのだが
msg.post("#collisionobject", "disable")
によって地面や刺に当たったメッセージが起きないようにしている
だがプレイヤー復活時に
msg.post("#collisionobject", "enable")
で衝突を有効にすると
プレイヤー復活時なので刺がまだ存在しないのに
刺に当たったときにのメッセージが発生することがあることが分かった
バグなのか仕様なのかは知らん >>31
完成版らしきもので試したら再現しないなあ
俺のだけなのか HTML5がやりたいのだが
runnerの完成版(ライフを示すハートと背景に宇宙が表示される)は
スペースキーを押してからジャンプするまで遅延が起こってまともなプレイができない html5のキーボード操作は素でつくっても反応わるいからなぁー つぎはどのチュートリアルまたはサンプルを見ようかな
もっといろんなサンプルソースが欲しい 早く作りたいが
わからないことだらけ
ゲーム作れるひと凄いわ エディタの起動がすごい遅い
さらにそこからプロジェクト開く
プロジェクト閉じる開くがわからん
別のサンプル見たいときエディタ終了してから、この遅いエディタ起動しないといけないのか まあゲーム作るのが目的ならわざわざコレやらんでもほかの方が情報もおおいしなあ
親の遺言でこれ使わないとあかんならカンバレとしか 同じ時間ついやすならunity
これで使われてるluaは曖昧が大丈夫過ぎて変なバグに悩ませられる
それに画像処理というかトランスフォームの取得とかも弱い チュートリアルrunnerカエルのサンプルで
local pieces = { "ground0", "ground1", "ground2", "ground3",
"ground4", "ground5", "ground6" }
つまり、コレクション内の特定のgoやスプライトの列挙はできないのか?
頑張ることにした >>43
列挙する命令あれば
コレクションで画面を変更して終わりなのにな
プログラムの方も直さないといけない チュートリアルmagic-link
やっぱビルドできない
javaメモリ不足
貧乏が悪い
このまま頑張る 一応まだ頑張っている
このスレが俺の誤情報満載な勉強日記になるから書き込みはしません
あとxxできないのかよxxの説明無いぞのぼろくそな不平不満がたんまりと
magic-linkはソースの画像を小さくすると32bitPCでもビルドできた
一部スクリプトの数値変えないと大きさが合わない
未だ直したりないけどビルドできたからいいや
construct2より可能性あると思って選んだのだが
ビルドできない壁にぶち当たるとはなあ
なんかやたらと糞難しいだけでできることは大差ない感じ
だがconstruct2無料版は100ステップとか制限あるから遊べないのでもう使わない 日本語を表示するにはデータとして用意しないといけないのはびっくりだ
osの機能やhtml5の<input>とかつかわんのかーい
むろん日本語入力やコピペもできん 日本語は日本語フォント入れてやればよい
その時all charsにチェック入れるの忘れないように チュートリアルは
http://britzl.github.io/publicexamples/
がおすすめ
作者はフォーラムでもアセットポータルでも大活躍のホビットおじさんだ
更新頻度も高い こんな便利なツールを作ってくれてありがとうと思っているんだが
特にこのツール だけの話ではなくて
動的にスプライトつまり画像が作れたらなあ
例えばリンゴが半分に切れる場合は、半分に切れた画像も用意しないといけない
これでは毎回切れる場所が異なるという場合に対応できない このような 便利なツールがあって ゲームが簡単に作れる のは ありがたい
このツールに限ったことではなく、物理演算で例えば風船みたいに上に移動するマイナスの重さを持ったもの作れないのか (goのz軸 + go#spriteのz軸)が{-1,0,1}以外になると、
go#spriteの画像がエディターでは見えるが
実行時は見えないなあ
画像を重ねる予定でいたんだけど >>57
分かった
別に遠くにあるからと言って小さくなるわけじゃないからz軸というよりzオーダーか
x : x座標(ピクセル単位)
y : y座標(ピクセル単位)
z : でもまだサイトでの説明文を見つけたわけじゃないので推測だから明言は避ける、座標とかピクセルとかそういうのではない スプライトはgoに入れないとリサイズできないのかああ ドキュメント見てもわかんないことだらけだ
大変すぎる クリックしたときその場所にあるスプライトを検出することができないのか?
というかスプライトにクリックイベントを使えんのか?
gui.pick_node()はguiのノードの枠内か調べることしかできないのか go.set_position(position, [id])
これ、zオーダーも変わってしまうのか、クッソ面倒だな オープニング画面やプレイ中画面などの切り替えも
クッソ面倒だななつくりだなあ
俺が知らないだけで簡単な方法でもあるのだろうか このテキストエディター
オートインデントが賢くない
イライラする テキストエディタはatomとか外部エディタと連動可能だな
オートインデントのパッケージもある 画面の切り替えはゲームオブジェクト内にコレクションプロキシ入れて
スクリプトからloadメッセージ飛ばす的な感じ msg.post("foo#collisionobject", "disable")
エディターの方で最初からdisableで作っておくとかできないのか ミリ秒は扱えないのか
思っていた以上に困ったことだらけだなあ hash()めんどくせえ
デコードはどうするんだ?
"#script"を付け足したいんだが isFoo = true
print("isFoo=" .. isFoo)
これ、エラーなのかよ
go.get(hash("/level/answer3#script"), "answer")
hashつかうとidねえよエラー
バグか
bool, go.get/set使うだけでこんな手間かけさせやがって とりあえず動くようなもの作って
コレクションプロクシでメニューとか出せるようにしようとしたら
urlが変わってしまって面倒なことになった
各goなどにスクリプト配置してそこで可能な限り処理して
別のgoの操作はmsg.postのやり取りがいいのかなあ
スクリプトファイルやmsg.postが多くてめんどくさ hashはどうやって文字列に戻すんだー
hashにされちまうから文字列操作できねえ testのあとENTERおしたらset_time_stepに書き換わってた
エディタの自動なんとかって機能だと思うが逆に手間かかるな もっと機能充実しろー
もっと簡単に作れるようにしろー
luaバージョンアップしろー
物理演算テトリスとか作ってみてえええ https://www.youtube.com/watch?v=cMTtNAjCG68
こういうゲーム中にスプライトの形状が変わるものはどうやって実装するんだ?
当たり判定の形状も変えないといけない >>76
コリジョンの形状三種類しかないから無理なんじゃないか
ベータ版だし気長にいこうや 日本語の文字をプログラムに含めるって
すごく無駄というかファイルサイズが大きくなる気がするんですけど
何とかなんねえかなあ
定期的にバージョンアップしているみたいだけど
じれってえ ゲーム作るの大変だなあ
みんなよく手の込んだものとか作れるなあ ファクトリーとかプロキシとかめんどくせえなあ
名前から全部作れるようにしろよ なんでクリックイベントがねえんだよ
めんどくせえったらありゃしない コレクションはpositionとかあるけど
コレクションプロクシに変更したら位置変えられなくなってしまうのかよ プロパティに文字列使えないの不便だなあ
別の場所にLUTとか作らないといけない
たとえばhtmlでいえば<img src=foo alt=bar title=baz >
lut[hash(foo)].bar="bar"
lut[hash(foo)].baz="baz"
みたいなのを別の場所につくらないといけないのか guiが他と違うので覚えることが多い
ノードの重なり順(描画順)はz座標を無視するので別の方法になる
ノードの方はドラッグで順番変えると説明にある(グーグル翻訳)
だが、できねえ
ドラッグすると別のノードの子に入れられる
レイヤーで指定するとノード順より優先で描画順を指定できる
レイヤーは名前を指定して追加すると最後に追加される
ドラッグしてもレイヤーの順番を変えられないんだけど
あとからレイヤー1とレイヤー2の間にレイヤー1.5をはさみたくなったときどうするんだろう
すべてのノードを一つ一つ別のレイヤーに移し替えていくのか
そしてレイヤー名も妥当なものに移し替えていくのか
今のところまだそういう事態が起きていないけど >>84
エディターで編集時はz軸の値で重なり順を指定できた
でも実行時はレイヤー順に重なる
あははは エディターでitemって打った後Enterで
itemが消えてclient:settimeout(value)になりvalueが選択されている状態に
換わる補完機能はやめてくれえええ
client:settimeoutにiとtとeとmがあるから選ばれるらしい
これはうろ覚えでプログラム書けて便利だなあ
と感じたことは今のところない
コメントや文字列でもこの機能が働きやがる 画像(スプライト)を好きなサイズに表示できると楽なんだけどなあ
https://www.defold.com/manuals/2dgraphics/
go.animate("my_object#sprite", "scale.x", go.PLAYBACK_ONCE_FORWARD, 1.5, go.EASING_INOUTSINE, 2)
スプライトにはscaleプロパティがあるのか
でもエディターでは扱えないぞ
プログラムからしか扱えないプロパティなのか
エディターで設定したいのだが
goの方で倍率でサイズを指定しないといけないのが納得できない
scaleプロパティではなくピクセル単位のサイズ指定したい
スプライトでできないとgoの入れ子が増えて複雑になるじゃんか
ええええええ
guiのBOXノードはアルファブレンドが指定できるけど
スプライトには半透明とか無いのか?
うわあああああ スプライトに対して標準のマテリアルでアルファブレンドができたけど
マテリアルにある値だからプログラム実行でしか値を変えられないな
エディタでコレクションを編集中の表示でアルファ値を変えられないから100%不透明
独自のマテリアル作って50%を初期値にしてみた
当然エディタでコレクションを編集中は50%固定で表示される
エディタでの表示にもマテリアルのプログラムが実行されて装飾された表示が行われるのはすごいと思うけど
プロパティがいじれなくてもったいねええ 文字列がhashにされるから逆変換するLUT作ったよ
めんどくせえ たまに衝突イベントが2回来るなあ
なにか確実に防ぐ手立てを考えねば
メッセージで動作するからなあ GUIをGUIやコレクション内でつかうときはテンプレートって呼び方変わるのか
ややこしい
gui.get_nodeみたいなゲットテンプレートが見当たらん、ノードに入れてノードでdisableとかしろってことなのか? スプライトのスケーリングで
左と上に薄く白線がでる
俺環境だけなのか? 違うgoに置いたサウンドがエラー
これは回避すればいいだけだが
何が悪いんだろう スクリプトが長くなった
手間かかる
基本的にいろんなgoにスクリプトを配置してメッセージポストでやりとり
メッセージ受信が肥大化する カメラがわからん
マニュアルやリファレンスではわからないことが多い
フォーラムの質問とかサンプルを見ると説明が見つかることがある
これが手間かかるんだ
見てもわからないこともある
カメラは期待してたのと違ったから使わないことにしよう guiとcollectionが機能やプログラムが違う
これってつまり覚えること多いじゃねえか
guiをcollectionに変更したくなった
つまりスクリプトとcollectionの作り直しだ
面倒
面倒面倒
面倒面倒面倒
うわあああああああああ guiのnodeの#boxでは画像をauto:サイズそのままと、ピクセルで手動指定
collectionではgo#spriteで画像を倍率で大きさ調節する
不自由じゃ セーブはこまめにしている
変更あったファイルが反映されないので
たまにリビルドしないと不可解なランタイムエラー出たりするな ネットで調べたところ
Luaの関数は引数すくないとnilになる
たとえば
function aaa(a,b)
において
aaa(a)
は
aaa(a,nil)
ということらしいが
msg.post(url, message_id)
は
msg.post(url, message_id,{})
ということらしい
msg.post(url, message_id, nil)
だとランタイムエラー
テーブルではないからということらしい めんどくさくてやる気落ちるな
高速化のためにhash?裏でこっそり使えよめんどくせえんだよ逆変換できないからデータ増えるたびに逆変換LUTの更新とかもうしんどい
プロパティに文字列使えるようにしろよなんでここでもhashなんだよ
いちいちmainコレクションにコレクションプロクシを配置しないといけないのかよ guiの方にはgui.get_textでテキストノードから文字列を取得できる
goの方ではlabalというテキストを描画するためのものがあるが文字列を取得できない
なんでこうも直交性が無いのかなあ
ゲームを作るのではなくこのツールに悪戦苦闘するのが目的になってきた goって親子関係あるけどurl的には全部ルートで同名禁止
子goを列挙できない、
親goを取得できない
できないので回避するようにプログラムを作るしかない
はあ〜
goにdisableメッセージを送るとそのgoは非表示になるが
その子goや子にあるスクリプトや子孫には効果ないな
今はエディタでスプライトのスケーリングを指定できないからgoを間に挟めっていうのがあるけど
goがネストすると非表示にさせる時おかしいことになるジャンダメじゃん
非表示にするわけだしスクリプトなど動作するひつようないのでdisableにしたいけど
goを遠い座標に移動させるのが楽なのかな
子goは相対座標なので一緒に移動して事実上の非表示
子go列挙機能が存在しないしプログラムにハードコーディングなんて無理だからこの方法になるのか
今考えてるものはシューティングゲームじゃないから離れた座標にgoがあっても問題ないだろう goをファイルにするとgoの中にgo入れられない
goではなくてスプライトのスケールを変えることはできるけど
衝突オブジェクトの形はプログラムから変えることできないのか
たとえば手足が伸縮するもの作るの面倒だなあ なんでだあああ
ファクトリーのcreateでスケール変えたのに
スプライトが大きくなったが
当たり判定の範囲が大きくなっていない
わからん
わからん
わからん
わからん
わからん >>109
こまったときのフォーラム
できないこと・わからないことだらけだから
フォーラムなしでは話にならんのだ
■フォーラム
https://forum.defold.com/t/scaling-collision-object-when-game-object-is-scaled-def-521/547/16
この発言は2015年11月
グーグル翻訳
ベクトルを使用してスケールすることができます。
スケーリングが均一でない限り、衝突はスケーリングされません。
どうやらこれは
factory.create(component, p, nil, {}, vmath.vector3(8, 1, 1))
とすると
スプライトは横に8倍に伸びたものが表示されるが
当たり判定のスケーリングは行われない。
factory.create(component, p, nil, {}, vmath.vector3(8, 8, 8))
とすると
当たり判定のスケーリングが行われる。
だがスプライトはx,y,zが同じ倍率で拡大される。
何でこんな糞バグが長期間放置されているんだよ
何でこんな糞バグが長期間放置されているんだよ
DEF-521
2014年4月の発言もあるなあ なんでスプライトのクリック検出やヒットテストがねえんだよおお
とにかくめんどくさい
ちょっと何か増やしたり改造するたびに直さないといけないこと多い
原因は簡単なことさ
できないことが多いから回避策やLUTが増える 少なくとも初心者フレンドリーではなさそうだな
スレタイに初心者って入ってるけど ■ このスレッドは過去ログ倉庫に格納されています