問題タブ [gdscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
signals - Godot のクラス内でシグナルを発行してコントロール プロパティを変更する
いくつかの項目を含むオプション ボタンがあります。現在のアイテムの変更は、ロジックを実行する関数に接続されています。マウスで行うと、期待どおりに動作します。しかし、コードで実行しようとすると(たとえば、_ready()
関数で、信号は呼び出されず、論理関数は呼び出されません:
ロジック関数を手動で発行できます。
しかし、クラス内で信号を発して制御プロパティを変更するより便利な方法はありますか?
gdscript - ベクター 3 のスピード キャップ式の何が問題になっていますか?
3D の動き。プレーヤーが左後方に移動すると、他の方向の 2 倍の速度で移動します。MoveDirection.x と z は、それぞれのアナログ スティックの方向に等しく、範囲は 1 から -1 です。
斜めに動くと0.5、0、0.5くらいの結果になると思っていたのですが、そうではありません。
gdscript - 数値から「絶対に」取得する方法は? (数値をオフセットする方法は?)
基本的に私がする必要があるのは a - b ですが、どちらかがどうなるかわかりません。a が正の場合、どうすれば a から b を「絶対的な」方法で取得できますか?
たとえば、A = 10 で B = 5 です。答えは明らかに 5 です。A が -10 だった場合、答えは -5 になります。答えは数字に関係なく0に傾いています。可能であれば、if ステートメントの使用を避けたいと思います。
私の最初のアイデアは a - (b * (b / abs(b))) でした。ただし、b が 0 になる可能性があると、div by 0 エラーが発生します。
編集:より良い言い方は、結果を数学ではなく量でオフセットしたいということです。
godot - Godot 3.1 は、lock() と get_pixel() が存在しない関数であることを教えてくれます
ノイズ テクスチャから高さマップを生成しようとしています。私の知る限りget_pixel()
、このコンテキストで画像を呼び出すには、まず画像をロックする必要があります。ただし、プログラムを実行しようとすると、エラーで終了します: Invalid call. Nonexistent function 'lock' in base 'StreamTexture'
.
イメージをロックせずに実行しようとすると、次のエラーが表示されますInvalid call. Nonexistent function 'get_pixel' in base 'StreamTexture'
。
私が実行している指示は、私が実行している Godot の同じバージョン (3.1) に対するものであると確信していlock()
ますget_pixel()
。
私のコードはここにあります:
どんな助けでも大歓迎です。
編集 - コメントで提案された変更を実装しようとしました (まだ色変数をどうするかわかりません)。結果のコードのスクリーンショットといくつかのコメントを添付しました。プロセスが機能する必要がある理由を自分自身に説明しようとしました(私は思います)。また、ノード構造も表示されるため、これを画像として表示することにしました。ただし、これを実行しようとすると、エラーが表示されてプログラムがクラッシュします。
godot - インスタンス化されたシーンで他のシーンからノードを初期化する方法は?
だから、私は kinematicBody2D Soldier でインスタンス化されたシーンを持っています。私は以前、「敵」スプライトの位置を取得し、その周りに円を「描く」スクリプトを書きました。兵士がこのエリアに入ると、スプライトに回転して射撃を開始します。
古いコードは次のとおりです。
問題は、兵士がもはやメイン シーンの一部ではなく、インスタンス化されていることです。
敵のスプライト ノードをインスタンス化されたオブジェクト スクリプトに取り込むにはどうすればよいですか?
godot - Godot 3.1 で test_move() を使用して Transform2D を見つける
KinematicBody2D の test_move() を使用して、キャラクターが壁の横にあるかどうかを確認しようとしましたが、壁に触れていませんでしたが、実際のドキュメントは単に
次に、ベクトル rel_vec に沿ってボディを動かそうとします。衝突が発生する場合は true を返します。
そして、私が見つけることができるすべてのチュートリアルは、唯一の引数がもう少し簡単な Vector2 である関数の古いバージョンを示しているだけです。
私が理解している限りでは、Transform2D はテストするオブジェクトの初期位置であり、Vector2 はオブジェクトが移動する方向を示し、無限の慣性はオブジェクトが衝突時に回転するかどうかを処理します。
私の問題は現在Transform2Dにあります。これまでのところ、ドキュメントで見つけることができる関数は、その形式でオブジェクトの変換を返す必要があるように見えるのはCollisionObject2Dのものだけです
しかし、私が何をしようとしても、私はいつもそれから恒等行列を取得しているように見えます.これを理解しようとして終わったコードのビットは
owner_id を取得するために使用したのが test_move()、shape_owner_get_transform()、または get_shape_owners() であるかどうか、私が誤解している関数はわかりませんが、助けていただければ幸いです。