このWikiは古くなりました:
新しいWikiへ移動
敵の動きに変化をつける
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
//@pnavi
[[←前>敵を破壊する]] [[次→>得点を表示する]] [[トップ>シ...
**敵の動きに変化をつける [#b43a98ef]
***新しい動きを追加する [#q102339c]
今の敵は、上から下に直線で飛んでくるだけなので、ちょっと...
途中までは今までどおり下に飛んできて、その後自機のいる方...
//prog
extends SpriteChar;
function onDie() {
appear(new Bomb(x , y ,$pat_Sample+4));
}
nexty=rnd(50)+100;
while (y< nexty ) {
y=y+2;
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
update();
}
if (x<$myChar.x) vx=2; else vx=-2;
while (y<$screenHeight) {
y=y+3;
x=x+vx;
update();
}
変更した部分を順番に見ていきましょう
//progfrac
nexty=rnd(50)+100;
まず [[rnd>Object.rnd]](50)は、[[敵を出現させる]]でも登場...
次のwhileの条件が変わっています
//progfrac
while (y< nexty ) {
yがnextyより小さい(nextyより上)にいるまでは、先ほどまでと...
そして、動きが変化するところでは、次のような処理を行います
//progfrac
if (x<$myChar.x) vx=2; else vx=-2;
vxは、後で説明するように、移動方向のx成分です。
''x<$myChar.x''ならば(つまり、敵の位置が自機より左なら)...
その後ろについている elseは「そうでなかったら」という意味...
x<$myChar.x''でない''ならば(つまり、敵の位置が自機より右...
上のようにしてvxを設定し、次の処理で実際に移動を行います。
//progfrac
while (y<$screenHeight) {
y=y+3;
x=x+vx;
update();
}
***追加した部分でも当たり判定を行う [#h5d92fbd]
しかし、これで実行させるとわかりますが、敵が曲がった後、...
曲がった後のwhileの中で当たり判定の処理を書き忘れているた...
//prog
extends SpriteChar;
function onDie() {
appear(new Bomb(x , y ,$pat_Sample+4));
}
nexty=rnd(50)+100;
while (y<nexty) {
y=y+2;
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
update();
}
if (x<$myChar.x) vx=2; else vx=-2;
while (y<$screenHeight) {
y=y+3;
x=x+vx;
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
update();
}
[[メソッド]]を使うともっと整理できます。当たり判定を行うa...
//prog
extends SpriteChar;
function onDie() {
appear(new Bomb(x , y ,$pat_Sample+4));
}
function atariHantei() {
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
}
nexty=rnd(50)+100;
while (y<nexty) {
y=y+2;
atariHantei();
update();
}
if (x<$myChar.x) vx=2; else vx=-2;
while (y<$screenHeight) {
y=y+3;
x=x+vx;
atariHantei();
update();
}
//@pnavi
[[←前>敵を破壊する]] [[次→>得点を表示する]] [[トップ>シ...
終了行:
//@pnavi
[[←前>敵を破壊する]] [[次→>得点を表示する]] [[トップ>シ...
**敵の動きに変化をつける [#b43a98ef]
***新しい動きを追加する [#q102339c]
今の敵は、上から下に直線で飛んでくるだけなので、ちょっと...
途中までは今までどおり下に飛んできて、その後自機のいる方...
//prog
extends SpriteChar;
function onDie() {
appear(new Bomb(x , y ,$pat_Sample+4));
}
nexty=rnd(50)+100;
while (y< nexty ) {
y=y+2;
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
update();
}
if (x<$myChar.x) vx=2; else vx=-2;
while (y<$screenHeight) {
y=y+3;
x=x+vx;
update();
}
変更した部分を順番に見ていきましょう
//progfrac
nexty=rnd(50)+100;
まず [[rnd>Object.rnd]](50)は、[[敵を出現させる]]でも登場...
次のwhileの条件が変わっています
//progfrac
while (y< nexty ) {
yがnextyより小さい(nextyより上)にいるまでは、先ほどまでと...
そして、動きが変化するところでは、次のような処理を行います
//progfrac
if (x<$myChar.x) vx=2; else vx=-2;
vxは、後で説明するように、移動方向のx成分です。
''x<$myChar.x''ならば(つまり、敵の位置が自機より左なら)...
その後ろについている elseは「そうでなかったら」という意味...
x<$myChar.x''でない''ならば(つまり、敵の位置が自機より右...
上のようにしてvxを設定し、次の処理で実際に移動を行います。
//progfrac
while (y<$screenHeight) {
y=y+3;
x=x+vx;
update();
}
***追加した部分でも当たり判定を行う [#h5d92fbd]
しかし、これで実行させるとわかりますが、敵が曲がった後、...
曲がった後のwhileの中で当たり判定の処理を書き忘れているた...
//prog
extends SpriteChar;
function onDie() {
appear(new Bomb(x , y ,$pat_Sample+4));
}
nexty=rnd(50)+100;
while (y<nexty) {
y=y+2;
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
update();
}
if (x<$myChar.x) vx=2; else vx=-2;
while (y<$screenHeight) {
y=y+3;
x=x+vx;
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
update();
}
[[メソッド]]を使うともっと整理できます。当たり判定を行うa...
//prog
extends SpriteChar;
function onDie() {
appear(new Bomb(x , y ,$pat_Sample+4));
}
function atariHantei() {
for (t in $chars) {
if ( t is Tama && crashTo(t) ) {
die();
}
}
if (crashTo($myChar)) $myChar.die();
}
nexty=rnd(50)+100;
while (y<nexty) {
y=y+2;
atariHantei();
update();
}
if (x<$myChar.x) vx=2; else vx=-2;
while (y<$screenHeight) {
y=y+3;
x=x+vx;
atariHantei();
update();
}
//@pnavi
[[←前>敵を破壊する]] [[次→>得点を表示する]] [[トップ>シ...
ページ名: