その他
A:作るつもりはあります。が、作る時間がありません
A:v0.12m、ph3ともに再現可能です。
A:まずは東方Toolswikiにあるツールスレッドへのリンクを探してみましょう
A:できないこともない気がしますが、ph3にしかない関数を使っているので諦めたほうがよさそうです。
ph3ならcoolierにサンプルがULされています。
A:背景の通常描画を無効にし、自力で描画するという方法で作られていると思われますが、自分が作ったわけじゃないのでよくわかりません。
追記→レンダリングテクスチャを使い、objrender系の関数を使ってゆがませているようです。ゆがませ方は知りませんが…
初見プレイ時はボムゲーでした。
A:ステージスクリプトで使うつもりなのであれば、ステージ側にアイテム生成処理をさせるのが一番楽でしょう。
単発再生だと無理そうです。
A:v0.12mだと敵が消滅した瞬間にマイクロスレッドなどの処理がすべて停止してしまうのでどうにもできません。
ph3だとそういった問題はなくなります。
A:個人的には別に何でもいいと思われます。phantasmストーリーが作れるなら一番合ったボスを起用するのがいいんじゃないですかね
A:問題がある部分がどうなってるのかよく分からないのでエスパーですが、条件文が長かったりしませんか?
分岐条件が多いと処理が遅くなります。
どうしてもわからないときは、問題がある部分をコピーして弾幕風スレで質問してみるのもいいでしょう。
コピーした部分が多かったりしたときは、pastebin.comを使いましょう。
New Paste枠内に問題があると思われる部分を貼り付け、そのまま下にあるSubmitを押せば送信できます。
ページが移動し、うまく送信できていることを確認したら、ブラウザ上のURLをコピーしてスレに貼り付けましょう。
弾幕風スレに書き込む場合ですが、名前欄は空欄、E-mail(省略可)欄はsageと書いておけば問題ないでしょう。
ちなみに、httpが含まれていると投稿の時にはじかれるので、ttpと変えておきましょう。
A:敵スクリプト内で共通データを作成し、ステージ側でそのデータを読み取りアイテムを作成する、というのがわかりやすくていいと思います。
ただし、ユーザー定義アイテムを出現させる場合は、ステージ側でアイテムを定義した関数群をインクルードする必要があります。
A:3D背景についてはこのサイトを参考にするといいと思います。
自分だとうまく解説できる気がしません^^;
ph3ならメタセコイアを使ってみるのも手かと 画像
A:この手の問題は、たいてい同じタスクを毎フレーム呼び出していることが原因のことが多いようです。
呼び出す場所を変えてみては如何でしょう。
A:両方とも、マスク機能を使っています。(弾幕風では未実装)
弾幕風にも実装してほしいという要望は出ているようですが、
マスク機能に必要な「ピクセルシェーダ」がPCによっては(特にXP以前のもの)使用できないため、
実装には時間がかかりそうです。それっぽいことなら無理やりできないこともないようですが…(参考動画)
A:メディの毒霧は、
敵スクリプト「霧オブジェクトの接触判定をとり、SetCommonDataで保存する」
自機スクリプト「保存されたデータを読み取り、SetSpeedで自機のスピードを変える」
みたいな感じですればいけます。
雷鼓の背景については、弾幕風v0.12mヘルプのエフェクトオブジェクト解説の「四重結界もどき」を参考にして作っています。
A:自分はこんな感じで作ってます。効率はかなり悪い気がしますが…^^;
task shot01(x, y, speed, angle, color)
{
let speed2 = speed;
loop(6)
{
let span = 3;
speed = speed2;
loop(10)
{
nway(x, y, speed, angle, 2, span, color);
speed-=0.2;
span+=6;
}
angle+=360/6;
}
function nway(x, y, speed, anglebase, way, span, color)
{
let angle = anglebase - (way - 1) / 2 * span;
loop(way)
{
CreateShotA1(x, y, speed, angle, color, 10);
angle += span;
}
}
}
A:多分これでできるはずです。
task move(obj, x, y, speed)
{
//obj オブジェクトid
//x, y 目的地座標
//speed 移動速度
let length = ((Obj_GetX(obj)-x)^2+(Obj_GetY(obj)-y)^2)^0.5;//目的地までの距離を計算
let angle = atan2(y-Obj_GetY(obj), x-Obj_GetX(obj));//目的地までの角度
let frame = length/speed;//移動にかかる時間の計算
loop(frame)
{
Obj_SetPosition(obj, Obj_GetX(obj)+speed*cos(angle), Obj_GetY(obj)+speed*cos(angle));
yield;
}
Obj_SetPosition(obj, x, y);
}
ph3版はこちら
task move(obj, x, y, speed)
{
//obj オブジェクトid
//x, y 目的地座標
//speed 移動速度
let length = ((ObjMove_GetX(obj)-x)^2+(ObjMove_GetY(obj)-y)^2)^0.5;//目的地までの距離を計算
let angle = atan2(y-ObjMove_GetY(obj), x-ObjMove_GetX(obj));//目的地までの角度
let frame = length/speed;//移動にかかる時間の計算
loop(frame)
{
ObjMove_SetPosition(obj, ObjMove_GetX(obj)+speed*cos(angle), ObjMove_GetY(obj)+speed*cos(angle));
yield;
}
ObjMove_SetPosition(obj, x, y);
}
A:もしかして→レンダリングテクスチャ
レンダリング:プログラムを用いて画像・映像・音声などを生成すること。
テクスチャ:画像
まあ、弾幕風がプログラム内部で生成した画像だと思ってくれればいいです。
普通の画像と違い、毎フレーム画像が更新されます。(別の設定が必要)
画像データなので、エフェクトオブジェクトで使用する画像などに使うことができます。
A:液タブとか使って書いてんじゃないですかね。書籍版文花帖によると編集はphotoshop使ってるようです。素材作成ならgimpで足りるでしょう。
A:その認識で合ってると思います。実装はかなりめんどくさいですが…(撮影タスクだけで600行以上)
試してみたかったら弾幕風wikiに置いてあるのを使ってみるといいでしょう。
A:画面の縦横比が変わってないなら(多分)仕様です。
A:多分ほとんど違いはないと思います。
A:自機を中心にして一定範囲にある弾のオブジェクトIDを取得し、そのIDから自機方向に向かってくる弾の角度を取得、
それから敵弾が来ない方向に自機を移動させてるだけです。
A:@読み込む画像は2の累乗サイズである
A画像の切り取り範囲が2の倍数である
BUV値の設定が適切である
C表示座標が整数である
このあたりを満たしていれば、ボケることはないはずです。
A:分離させた方が良いと思います。自分は無理やり一つにまとめたせいでややこしくなりました。
A:可能です。
A:画像の切り出し範囲と表示位置をそれぞれ配列使って制御すればまとめられますが、左右反転した時の処理が複雑になります。
A:SetDefaultStatusVisibleをfalseにして、ObjEffect_SetLayerを8に設定すればエフェクトオブジェクトが枠の上に表示されるようになります。
A:ノーマルをノーコンクリアした時にEx解放フラグをSaveCommonDataで保存すれば可能です。
A:その考え方で合っています。ph3版サンプルを参考にするといいでしょう
A:端の部分は真ん中部分の延長として考えてやるのがいいでしょう。自分はそれでうまくいってます。
A:C言語のことについてはよく知らないから何とも言えませんが、やり方によってはできるんじゃないですかね?(適当で申し訳ない…)
A:1. リングのテクスチャを作る
2. 敵の座標を中心に、何枚かの二等辺三角形でライフゲージを描画
HP0%=中心角0°の二等辺三角形n個(何も表示されない)
HP50%=中心角(180/n)°の二等辺三角形n個で半周分敷き詰める
HP100%=中心角(360/n)°の二等辺三角形n個で1周分敷き詰める
こんな感じで作るといいでしょう。
SetPrimitiveTypeでPRIMITIVE_TRIANGLEFANを指定すると作りやすいですよ。
A:自分でアイテムを定義し、点アイテムをとった時にエクステンド用の変数を変えるなどすれば可能です。
A:HPが一定以下になったら攻撃を止め、無敵化するといった形で行けるかと思います。
ph3ではHPが0になっても自分で敵ボスオブジェクトを削除しない限り残るので、画面外に移動させてから削除すれば可能です。
A:GetKeyState(ph3ならGetVirtualKeyState)のVK_SLOWMOVEの押下判定を取得して、
それに応じて低速移動時の魔方陣を表示すればできます。
A:v0.12mだとレンダリングテクスチャの関係で不可能です。ph3で頑張ってください…
A:動いてません。原作だと遅延時間中も動いてる弾があるみたいです。
A:加算合成+半透明合成(R,G,B=0,0,0)を組み合わせて構成されたもの(背景が暗い時、雷鼓戦時など)と、
減算合成だけでで構成されたもの(背景が明るい時、チルノ戦時など)の2種類あります。
A:申し訳ない、よく分かんないです…
別ファイルに分けずに同じファイル内に入れればできるかと思われます。
可能性としては、名前間違ってるか、script_enemy内に記述してたりするのかもしれません。
A:それができればいいのですが、そんなことをしたら重すぎてゲームにならないと思います。
原理的にはそれであってるのですが…
A:それ解説するとかなり長くなりますが、簡単に説明すると
1:自機パワーごとに移動前、移動後のX,Y相対座標(自機からX,Yドット離れた所云々)を配列で設定する
2:オプションごとに設定された座標データを取得する
3:低速ボタンの押下状況に応じて、高速移動時オプション座標-低速移動時オプション座標を変更する
こんな感じです。陰陽玉はオブジェクトで管理すれば、ショット発射座標も一緒にできていいと思います.
opx = [40*cos(70), 40*cos(110), 40*cos(150), 40*cos(30)];//高速移動時オプションX座標
opy = [40*sin(70), 40*sin(110), 40*sin(150), 40*sin(30)];//同Y座標
opx2 = [30*cos(-75), 30*cos(-105), 30*cos(-135), 30*cos(-45)];//低速移動時オプションX座標
opy2 = [30*sin(-75), 30*sin(-105), 30*sin(-135), 30*sin(-45)];//同Y座標
A:レーザーと同じ、[x,y座標][速度][角度]を設定した弾を同じタイミングで撃てば作れます。
へにょりレーザーはちょっと面倒で、オブジェクト弾で毎フレームレーザー座標を直接指定し続ける必要があります。
A:v0.12mだとその方法が一番早いと思います。
ph3なら弾を作成し、ObjRender_SetAlphaで透明にしてから
ObjShot_SetIntersectionCircleA1で当たり判定を付けるのがいいんじゃないかなと思います。
A:変数を用意して、欠片を取得するごとにその変数の値を増やし、一定以上になったらエクステンドする、という風にすれば作れます。
A:どのように書けば…と言われても、複雑で難しいので他の人が作ったスクリプトを参考にして作るのがいいと思います。
A:こちらの環境では劣化はあまり感じられないので、PCの問題か、テクスチャの切り取り範囲、配置座標に問題があるかと思われます。
上の方でも書いてありますが、
@読み込む画像は2の累乗サイズである
A画像の切り取り範囲が2の倍数である
BUV値の設定が適切である
C表示座標が整数である
このあたりを確認してみてください。それでも治らないようであればPCの問題だと思います。
A:GetFpsで現在のfpsが取得できるので、整数部分と小数部分を分けて描画するといいでしょう。
数字画像を用意しておき、数値によって画像の切り取り範囲を変えるという方法で作ることができます。
A:エフェクトの黒住は経験したことがないのでわかりませんが、v0.12mだとADDを設定すると透明度が無視されるしようとなっています。
透明部分を黒(RGB=0,0,0)に指定すれば問題なく使用できます。
なお、ph3では加算合成でも透明度が適用されるようになっています。
A:可能です。ステージ開始時に数フレームずつずらし、まとめて読み込んでしまえばいいと思います。
「少女祈祷中」に不要なデータを破棄&必要なデータを読み込めばいいと思います。
A:
let a = [x, y];
SetCommonData("test", a);
みたいにすれば使えるはずです。
A:ある程度までなら合わせることができます。
A:雑魚敵スクリプト内の@FinalizeでDeleteGraphicを使っているのが原因です。
ステージスクリプト側で消すようにしましょう。
A:貴方もう作ってるじゃないですか。高解像度で。追記:成り済ましての質問はご遠慮ください
A:回転行列がわからないので他の人当たってください。
A:If you are using a "ph3", you might be able to solve if you use "ObjShot_SetEraseShot"
P.S.:Since there is likely to be garbled, please write in English from the next.
A:原作データをそのまま配布するのはアウトです。元データを改変したものも多分アウトです。
目コピで1から作ったのならセーフだと思います。
参考:二次創作・使用のFAQ
A:ObjEffect_SetScale(obj, (NowHP/MaxHP), 1)で出来ると思います。
A:使い方が間違っているわけではありませんが、v0.12mとPCとの相性が悪いため問題が発生している可能性があります。(PCによっては起動すらしなくなる)
v0.12mの開発は終了しているので、使うのをあきらめるか、ph3に移行することをお勧めします。
A:スコア上限に関しては、100億程度なら問題ないようです。
打ち込み点はObjEnemy_GetInfoの「INFO_SHOT_HIT_COUNT」を使えばできます。
A:全部メタセコイアの3Dモデルを使用しています。
v0.12mのエフェクトオブジェクトで作ろうとすると処理落ちでまともに遊べなくなるような気がします。
coolierに階段モデルがアップされているので、ph3に移行することをお勧めします。
A:要約すると、
・再配布・改変の禁止
・ネットにアップロードしての使用を禁止
・商用利用の禁止
です。
弾幕風で使用する場合は、出力した文字をペイントソフトなどで画像化して使用すればOKです。
A:別々に動く画像を複数個組み合わせてできてます。
古い弾幕風wikiを探せば素材配布されてたと思います。
A:v2であれば弾をエフェクトとして画像だけ作成し、ph3であれば弾オブジェクトを作成して、
エフェクトオブジェクト用関数で大きさを変え当たり判定設定関数で当たり判定設定すれば作れます。
A:ph3ならdefault_system>imgフォルダ内の画像を差し替えればそれっぽいのが作れると思います。
敵の後ろの回転する魔法陣がどれ指してるかわからんですが画像読み込んでObjRender_SetAngleXYZで適当に回せばそれっぽくなると思います。
A:v2なら魔法陣はエフェクトオブジェクトで作ってObjEffect_SetLayerで表示順位変えるのがいいです。
ついでに言うとなんか作るなら融通効かないv2より拡張性高くてわかりやすいph3でやった方がいいと思います。
A:coolierに昔作ったサンプルがあります。
A:ObjEffect_SetAngleのZ角度/ObjRender_SetAngleZの角度を増やせば回ります。
A:これ見て頑張ってください。PC新しくしたらv2起動しなくなったので検証できません…