ここ StackOverflow で質問するのはこれが初めてです。
Unity 3D 公式の「Roguelike 2D」チュートリアルを終了し、それを自分で拡張しようとしています。がPlayer
壁に足を踏み入れようとすると、代わりに壁にダメージを与え、最終的に突破します。
わかりやすくするために、サウンドとアニメーター コマンドを削除しました。
protected override void OnCantMove<T> (T component)
{
Wall hitWall = component as Wall;
hitWall.DamageWall (wallDamage);
}
そして、 が にEnemy
歩み寄ろうとするとPlayer
、代わりにダメージを与え、彼を傷つけます。
protected override void OnCantMove <T> (T component)
{
Player hitPlayer = component as Player;
hitPlayer.LoseFood (playerDamage);
}
playerDamage
Enemy スクリプトによってwallDamage
設定され、Player スクリプトによって設定されます (つまり、どちらもダメージを与えるスクリプトによって設定されます)。LoseFood
またDamageWall
、Player スクリプトと Wall スクリプトによって設定されます (どちらも、ダメージを受けるスクリプトによって設定されます)。
Enemy
のように壁にダメージを与えられるようにしてほしいPlayer
。そこで、Enemy スクリプトのOnCantMove
部分を次のように変更してみました。
protected override void OnCantMove<T> (T component)
{
Wall hitWall = component as Wall;
hitWall.DamageWall (wallDamage);
Player hitPlayer = component as Player;
hitPlayer.LoseFood (playerDamage);
}
この:
protected override void OnCantMove<T> (T component)
{
Wall hitWall = component as Wall;
Player hitPlayer = component as Player;
if (hitWall) {hitWall.DamageWall (wallDamage);}
else if (hitPlayer) {hitPlayer.LoseFood (playerDamage);}
}
どちらも私が望んでいたようには機能しませんでした。OnCantMove
の機能を が壁にぶつかったEnemy
ときと同じになるように置き換えようとしたことさえありましたが、それは が壁にぶつかるのを可能にすることなく、を殴らなければならなかっPlayer
た機能を削除しただけでした。この問題を解決できるかどうかを確認するために、次に何を試すべきですか?Enemy
Player
これがうまくいけば、他の方法でもこのゲームを拡張し続けることができると期待していますが、私はこれについて非常に新しいです。助けとアドバイスをありがとう。