cocos2d ゲームでキャラクターとプラットフォーム間の衝突を検出しようとしています。
ゲーム全体が 1 つのクラスで実行され、1 つのメソッドで更新されます。前の質問で、1 つの更新メソッドと多数の更新メソッドではパフォーマンスに違いはないと言われました。
これは私が衝突をチェックする方法です:
if(velY<=0)
{
if(_guy.position.x<child.position.x+child.contentSize.width/2 && _guy.position.x>child.position.x-child.contentSize.width/2)
{
if(velY/50<5)
{
if(((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))<abs(10) && ((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))>-4)
{
//some code
}
else if(((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))<abs(velY/50) && ((_guy.position.y - _guy.contentSize.height/2) - (child.position.y+child.contentSize.height/2))>=-4)
{
//some more of the same code as above
}
これif(velY/50<5)
は、動きが遅い場合に大きなウィンドウがあり、より広い範囲内にいることができるようにするためです.
画面上のすべてのスプライトが動いており、すべてが 1 つの大きなバッチに含まれています。update メソッドでは、バッチの各子をループし、 (メイン キャラクター) の範囲内x
にある場合は、彼をプラットフォームに設定します。しかし、時々、男がプラットフォームの上を通り過ぎると、それを逃したように見え、通り抜けてしまうことがあります。これは、各プラットフォームをチェックするのに時間がかかるためだと思いますか? これを行うより良い方法はありますか?y
_guy