ph3_基本

ph3_基礎

「v0.x系基本講座」の内容を勝手にパクり、
勝手にph3の形式に変えただけの講座です。
「v0.x系基本講座」の作成者とは全くの別人です。


1 準備

弾幕風ph3の骨組みはこんな感じです。
    
#東方弾幕風[Single]
#ScriptVersion[3]
#Title[""]
#Text[""]
 
@Event {
}
@Initialize {
}
@MainLoop {
}
@Finalize {
}

v0.xと違う所をあげれば、
・#東方弾幕風のあとに[Single]が必要になった
・#ScriptVersionが3になった
・#Title、#Textが文字列入力になった
・@Eventが追加された
ぐらいでしょうか。

2 敵の作成 (位置、体力、当たり判定)

先ずは敵の初期位置です。
と、言いたいところですが、
実は弾幕風ph3。"ボスもオブジェクトで作成しなければならなくなった"んです。
オブジェクトっていうと、知ってますよね?
v0.xでいう"Obj_Create"ってやつですよ。
v0.xではこれで弾とかレーザーとか画像の制御をしていました。
ph3ではそれに加え、更に敵や音、文字とか色々制御できるようになります。
まぁそこまで解説するつもりはないですが
ボスシーンオブジェクトの作成 *

では早速敵の作成を行っていきます。
まずはv0.xと同様、オブジェクトIDを用意します。
ボスはスクリプト内の様々な場所で制御できるようにしたいので、この位置に変数を用意しましょう。

    
//~~略
#Text[""]
 
let objEnemy;
 
@Event {
//~~略

}

敵やボスを作成するオブジェクト関数は「ObjEnemy_Create」です。
今回作成するのはボスなので、引数にはOBJ_ENEMY_BOSSを入れます。

    
@Initialize {
    objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
}

これだけではボスは出現しないので、アクティブ化させてあげます。
アクティブ化についてはよく分からないんで、誰か詳しい人編集してください。
    
@Initialize {
    objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
    ObjEnemy_Regist(objEnemy);
}

初期位置

ようやく初期位置の登録が出来ます。
ph3でボスの位置設定は「ObjMove_SetPosition」で出来ます。
ObjEnemyで作成したのにObjMoveが使えるのは何でかって?
公式ヘルプのオブジェクトの欄を見ると幸せになれますよ。画像張ってもいいんですけどね
また、後々便利そうなので敵・弾の制御用タスクを作成します。
@Initialize {
    objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
    ObjEnemy_Regist(objEnemy);
     
    TWork;
}
 
//~~略
 
task TWork {
    ObjMove_SetPosition(objEnemy, 384/2, 100);
}

体力

敵の体力を設定するには「ObjEnemy_SetLife」という関数を使います。
(敵ID(要はobjEnemy), 敵の体力)で設定ができるので、例えば敵の体力を1000にしたい場合、このようにすれば良いというわけです。
@Initialize {
    objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
    ObjEnemy_Regist(objEnemy);
    ObjEnemy_SetLife(objEnemy, 1000);

    TWork;
}
 
//~~略
 
task TWork {
    ObjMove_SetPosition(objEnemy, 384/2, 100);
}

当たり判定

敵の当たり判定には2種類あります。自機の弾に対する当たり判定と、自機そのものに対する当たり判定です。
対弾の当たり判定は「ObjEnemy_SetIntersectionCicleToShot」、対自機の当たり判定は「ObjEnemy_SetIntersectionCicleToPlayer」で設定できます。
(敵ID, 当たり判定の中心X座標, 当たり判定の中心Y座標, 半径)で設定ができます。
また、この時「ObjMove_GetX」でそのオブジェクトのX座標を出すことができます。Y座標は「ObjMove_GetY」で求められます。
@Initialize {
    objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
    ObjEnemy_Regist(objEnemy);
    ObjEnemy_SetLife(objEnemy, 1000);
    ObjEnemy_SetIntersectionCicleToShot(objEnemy, ObjMove_GetX, ObjMove_GetY, 10);
    ObjEnemy_SetIntersectionCicleToPlayer(objEnemy, ObjMove_GetX, ObjMove_GetY, 8);

    TWork;
}
 
//~~略
 
task TWork {
    ObjMove_SetPosition(objEnemy, 384/2, 100);
}

  • 最終更新:2019-03-11 13:57:09

このWIKIを編集するにはパスワード入力が必要です

認証パスワード