坂道 その4
坂道を歩く処理を再実装しました。
差分
前回の実装では坂道の上にいるときはほとんどのブロックをすり抜けていましたが、今回はぶつかるべきブロックにはぶつかるようになっています。
そもそもブロックの当たり判定を無視していた理由は、坂の境界線上にキャラクタを配置した際にどうしてもめり込んでしまうブロックがあるからで、それ以外のブロックにはぶつかる必要があります。
このめり込む部分は坂に向かって前方下半分の角なので、矩形全体で判定した後でこの部分を除外すればよいことになります。
なお、除外すべき正確な範囲は短い辺の長さが矩形の幅の半分である直角二等辺三角形になりますが、面倒なので正方形で計算しています。
TODO:
- 坂道が動く場合
- 1フレームで複数の坂道を歩き過ぎた場合