問題タブ [unity3d-2dtools]
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.
c# - シーンを変更した後、非表示のオブジェクトが非表示にならなくなりました
Unity と C# は初めてなので、ご容赦ください。プレーヤーが自由に移動できるシーンがいくつかあり、そのうちの 1 つに、マウスをクリックしたときに非表示にするイメージ オブジェクトがあります。現在、それを非表示にするために使用する 1 つの imageobject にスクリプトを追加しましたrenderer.enabled = false;
。プレーヤーがそのシーンに戻ると、それはもう隠れていません。これを行う正しい方法は何ですか?
//------編集部分-----------今は動作します:)
c# - プレイヤーの死亡アニメーションが終了した後にバックグラウンド スクロールを停止する
こんにちは、2D エンドレス ランナーを作成しています。背景には 2 つのアニメーションがあります - Scroll と stopScroll
- 死のアニメーションを有効にする - これは起こっています
- タイマーを停止 - 停止すると、すべてのアニメーションが停止します
- バックグラウンドのスクロールを停止します - これは、死のアニメーションが終了する前に発生し、最初のフレームに戻る前に発生しますが、発生しています。キャラクターが死亡した場所に対して背景を停止したい。
- キャラクターを破壊する - これは起こっていますが、アニメーションが完了する前です。コルーチンを使用する必要があると思いますが、方法がわかりませんか?
助けてください!
提案された私の更新されたコードは次のとおりです
背景アニメーション 背景のスプライトを複製し、並べて配置しました。RHS スプライトは、階層内の LHS スプライトの子です。次に、LHS bg スプライト -> ウィンドウ -> アニメーションをクリックします。add curve を使用して bg を X 軸上で変換し、無限に動かします。
c# - 実行時にゲームオブジェクトを追加する
これはばかげた質問のように思えるかもしれませんが、私はそれにこだわっています。リスト ( List<GameObject>
) に GameObjects があり、それらをシーン ランタイムに、できれば事前に定義された場所 (プレースホルダーなど) に追加したいと考えています。それを行う良い方法は何ですか?私はネットを検索してきましたが、これを解決するものは本当に見つかりません。これまでの私のコードは次のとおりです。
写真 (5) を所定の場所に配置するにはどうすればよいですか?
編集: 1 つの画像をプレースホルダー (透明な png) に配置できるようになりました。何らかの理由で z 値が至る所にあるため、強制的に -1f にする必要がありますが、それで問題ありません。他のシーンの画像をリストに追加すると、1 ~ 5 枚の画像が表示されます。プレースホルダーを別のリストまたは配列に入れる必要がありますか? 私はここで少し迷っています。
unity3d - リジッドボディ間のプッシュを避ける
Unity (ポケモン スタイル) の 2D ゲームに問題があり、ゲームtransform.position
オブジェクトの移動に使用しています。
プレイヤーと彼を追う敵がいます。すべて問題ありません。しかし、敵が衝突すると、互いに押し合い始めます
敵とプレイヤーが衝突したときに誰も押されないようにする必要があります。
- 敵にキネマティックを使用しようとしましたが、プレイヤーはそれらを押すことができます。
- プレイヤーに大量の質量を追加しようとしましたが、彼は敵を押すことができます.
- とのコードで当たり判定を試みたのです
OnCollision
が、敵の移動をキャンセルすると元に戻りません。
- - アップデート - -
衝突が必要ですが、それらの間をプッシュすることなく、問題を説明するビデオがあり ます https://www.youtube.com/watch?v=VkgnV1NOxlw
記録のために、私は A* パスファインディング スクリプト ( http://arongranberg.com/astar/ ) を使用しています。ここでは、敵がスクリプトを移動します。
- - アップデート - -
最後に、ターゲットが近づいて停止したときに、rigidbody2D.isKinematic プロパティを true に変更して、期待どおりの結果を取得します。
ここにビデオがあります https://www.youtube.com/watch?v=0Zm0idUU75s
そして敵の移動コード
c# - ゲーム オブジェクトの rightHorizontalBound と同じタイプを取得する方法は? だから私はそれらの値を比較できますか?
私は持っているgameobject charTransform = GameObject.FindGameObjectWithTag ("Character");
そして、私はコードで世界の境界を取得しています
rightHorizontalBound = camera.ViewportToWorldPoint (new Vector3 (1,0, camera.nearClipPlane)).x;
質問: と同じタイプのゲーム オブジェクトを取得するにはどうすればよいrightHorizontalBound
ですか? だから私はそれらの値を比較できますか?
は としての WorldPointif(charTransform1.position.x >= rightHorizontalBound)
ではないため、すべての悪いことが で発生します。charTransform1.position.x
rightHorizontalBound
私が比較する機能が必要なので、キャラクターは右の境界線を通過できません。ここにコードがあります
unity3d - 複数のコライダーへの推奨アプローチ
おそらく非常にばかげたことで、私はいくつかの困難を抱えています。私は敵のゲームオブジェクトを持っており、それがどこにぶつかったか (衝突) に応じて、それが死ぬか、プレイが死ぬかのどちらかです。これを説明する最も簡単な方法は、例として古典的なスーパー マリオ ブラザーズゲームを使用することだと思います。
ご存知のように、プレイヤーが敵にぶつかると、敵の頭の上にジャンプしない限り、プレイヤーは負けます。その場合、敵は死ぬはずです。
私の最初のアイデアは、ゲームオブジェクトに 2 つのコライダーを作成することでした。
- 青い境界線は BoxCollider2D を表します。これと衝突すると、プレイヤーが負けます (上から少し下にあることに注意してください)。
- 緑色の境界線は、子ゲーム オブジェクトの BoxCollider2D を表します。これと衝突すると、ゲーム オブジェクトが停止します。
以下は、私が使用したコードの簡略版です。
この種の方法は機能しますが、コライダー #1と衝突した直後にコライダー #2もトリガーされ、敵が破壊されている間、プレイヤーも負けます。
私は RigidBody2D の値をいじって、プレイヤーが上から敵に当たったときに 2 番目のコライダーに入らないようにしました。 )。
私は RayCasts を調べましたが、これは複雑すぎて、かなり些細なことのように見えます (プレーヤーの 4 つの側面と 4 つの頂点すべてに光線をキャストします - プレーヤーにボックス コライダーがあると仮定します)。
私が「今のところ」頼ったのは、私が不満を持っている単純なコード片を持つ単一のコライダーであり、常に機能するとは限りません。
私は現在 2D モードで作業していますが、3D モードの解決策 (私の質問には必要以上に複雑かもしれません) も検討されます。
みんなありがとう。
unity3d - プレイヤー コントロールを追加すると重力が劇的に変化する
したがって、rigidbody2D を追加すると、重力は通常どおりに機能します。プレイヤー スプライトが落下し、下向きの速度が増加します。非常に単純なプレーヤー コントロールを追加すると、ほとんどスロットルされているように見えますか? 重力を 50 程度に上げても、プレイヤー制御スクリプトがないと、gravity=1 (デフォルト設定) と同じようには感じられません。これが私のコードです。