KinematicBody2D の test_move() を使用して、キャラクターが壁の横にあるかどうかを確認しようとしましたが、壁に触れていませんでしたが、実際のドキュメントは単に
bool test_move( Transform2D from, Vector2 rel_vec, bool infinite_inertia=true ) Checks for collisions without moving the body. Virtually sets the node's position, scale and rotation to that of the given Transform2D,
次に、ベクトル rel_vec に沿ってボディを動かそうとします。衝突が発生する場合は true を返します。
そして、私が見つけることができるすべてのチュートリアルは、唯一の引数がもう少し簡単な Vector2 である関数の古いバージョンを示しているだけです。
私が理解している限りでは、Transform2D はテストするオブジェクトの初期位置であり、Vector2 はオブジェクトが移動する方向を示し、無限の慣性はオブジェクトが衝突時に回転するかどうかを処理します。
私の問題は現在Transform2Dにあります。これまでのところ、ドキュメントで見つけることができる関数は、その形式でオブジェクトの変換を返す必要があるように見えるのはCollisionObject2Dのものだけです
shape_owner_get_transform( int owner_id ) const Returns the shape owner's Transform2D.
しかし、私が何をしようとしても、私はいつもそれから恒等行列を取得しているように見えます.これを理解しようとして終わったコードのビットは
var transform2d = Transform2D(owner.shape_owner_get_transform(owner.get_shape_owners()[0]))
if owner.test_move(transform2d, Vector2(-20, 0), true):
print("on your left").
owner_id を取得するために使用したのが test_move()、shape_owner_get_transform()、または get_shape_owners() であるかどうか、私が誤解している関数はわかりませんが、助けていただければ幸いです。