タグ付けされた質問 「c#」

C#は、Microsoftが.NETプラットフォームと組み合わせて作成した、マルチパラダイムで管理され、強く型付けされ、ガベージコレクションされたプログラミング言語です。

2
スクリプト可能なオブジェクトの条件変数
を使用しているScriptableObjectsときに、一部の変数を条件付きにするにはどうすればよいですか? コード例: [System.Serializable] public class Test : ScriptableObject { public bool testbool; public string teststring; public int testint; } 目標:testbool == trueそれからteststringすると、編集に利用可能であるtestbool == false、その後testint、他の一つは「されている間、編集に利用可能であるグレーアウト」。
10 unity  c# 

1
Unityで実行時にインタラクティブクロスからメッシュを保存する方法は?
シーンの開始時に、「ボール」のゲームオブジェクトの上に「シート」と呼ばれるゲームオブジェクトを配置しました。シートには、インタラクティブクロスコンポーネントとクロスレンダラーがあります。インタラクティブクロスコンポーネントのメッシュは、多数の頂点を持つ平面です。実行時にシートがボールの上に落下し、必要な形状が作成されます。この時点でInteractive Clothコンポーネントを無効にすると、シートメッシュは希望どおりにとどまりますが、プレハブとして引き出すことができません。 誰かがその形のコピーを取得する方法を知っていますか? たとえば、実行時にインタラクティブクロスからメッシュを読み取り、それを使用してインタラクティブクロスコンポーネントなしでメッシュを希望どおりに戻すことができます。 どんな助けでも大歓迎です。
10 unity  c#  3d-meshes  cloth 

3
Unity3Dでの剛体ジャンプ力とバウンスの大きさの組み合わせの防止
Unity3Dでかなりシンプルな大理石のレーシングゲームを構築しています。ボールは、X軸とY軸上でのみ移動する3D物理オブジェクトです。左右に転がったりジャンプしたりする能力があります。ゲームを壊す問題に遭遇したことを除いて、かなり基本的なものです:落下して地面に当たったとき、ボールのバウンスの大きさをそのジャンプ力と組み合わせて、超高ジャンプを作成できます。つまり、適切なタイミングでボタンを押すと、プレーヤーはボールを急激に跳ね上げ、意図しない高さに達する可能性があります。この不具合が修正されるまで、レベルを適切に設計できません。この例を示しました: ただし、ジャンプは、ボールをまっすぐ上向きに発射するほど簡単ではありません。レベルの設計をより複雑にするために、ボールが転がっている表面に対してジャンプ角度をプログラムしました。 この図の図3は、これまでのところ私のゲームの動作を示しています。図4ではありません。Y軸上の正確な力または速度を単純に測定して設定することはできないので、これはバウンス+ジャンプの問題の解決をはるかに困難にします。これを行うと、奇妙な動作が発生します。これは、ボールが急な斜面を移動するときに劇的に顕著になります。 これまでのところ、私はこのゲームの他のすべてのデザインの問題の解決策を考え出して、それらをプログラムする方法を見つけることができましたが、これは私が行き詰まっています。私はさまざまな方法を試しましたが、どれもうまくいきませんでした。 以下は、ボールのジャンプを制御するC#スクリプトです。 using UnityEngine; using System.Collections; public class BallJumping : MonoBehaviour { public System.Action onJump; public Rigidbody objRigidbody; // Set this to the player public bool isGrounded; // Determines whether or not the ball is on the ground public Transform groundChecker; // A child object that's slightly …
10 unity  c#  physics  jumping 

4
ラインレンダラーラインをフラットに保つ方法は?
Line Rendererラインに頂点を追加すると、ラインがねじれて滑らかなラインでなくなることに気付きました。 .GIFこちら:http : //i.imgur.com/hRAhCXM.gif すべての線が同じzレベルにあります。材料を削除しても、線はまだねじれているようです。 なぜこれが行われるのか、またはどのように解決するのか、提案がありますか?
10 c#  unity  2d  lines 


2
UnityのUpdateとFixedUpdateの違いは何ですか?
Update()グラフィックスとFixedUpdate()物理学に使用するように言われましたが、を使用すると入力が登録されないことがありますFixedUpdate()。私Update()がすべてのために使用する場合でもそれはうまくいきます。 私は気にする必要がありますかFixedUpdate()、それとも何か間違っていますか?
10 unity  c#  game-loop 

1
AIが目標に到達するために回転する正しい速度を見つける
私は最高速度で移動し、毎秒度maxSpeedを変えることができる船を持っていrotationSpeedます。船は常に向いている方向に移動します。つまり、船が速く移動するほど、旋回半径が大きくなります。 私は自分の位置、回転、ターゲットの位置を知っています。 私が理解したいのは、ターゲットがこの速度で私の回転半径内にあるかどうか、またはより良い、私が移動できる最大速度は、ターゲットを回り続けることなくターゲットに方向転換するためです。 これを行うための効率的な方法がありますか? これが私がこれまでに考えていることです。1ステップあたりの移動距離と1ステップあたりの回転量がわかっているので、次の2つのフレームのどこにいるのかがわかります。私の現在の位置はp1で、次の位置はp2、次にp3です。(p1、p2)と(p2、p3)の垂直二等分線をとることができます。彼らの交点は私に円の中心を与えます。次に、ターゲットがその円の中にあるかどうかをテストできます。 これが3Dで機能するかどうかは不明です(入力で球を計算する方法がわかりません)。この解決策は、旅行に適した速度を見つけるのにもあまり役立ちません。妥当な速度を見つけるには、さまざまな速度で数回試す必要があります。 誰もがより良い解決策にいくつかの光を当てることができますか?

3
2Dゲームの解像度を独立させるにはどうすればよいですか?
私は単純な2Dゲームに取り組んでいます。携帯版を完成させました。 ただし、上司は自分のRTでゲームを動作させたいと考えています。「変換」を実行していますが、次のように画面サイズをハードコード化しているため、ボタンが間違った場所にあります。 texture = game.Content.Load<Texture2D>("StartScreen"); mainFrame = new Rectangle(0, 0, game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height); // button definitions startbrect = new Rectangle(300, 258, 88, 88); startbtext = game.Content.Load<Texture2D>("bplay"); この例でmainframeは問題startbrectありませんが、Windows Phoneの画面に合わせてサイズを定義したので問題ありません。すべてのWindows 8電話の画面が異なる場合、レスポンシブデザインをどのように処理できますか?適切なサイズになるたびに計算する数式またはマクロはありますか?
10 c#  2d  resolution 

2
既知のキューを持つマッチゲームを最適化するアルゴリズム
Flowerzと呼ばれるゲームのソルバーをC#.NETで記述しようとしています。参考までに、MSNで再生できます。ここ:http : //zone.msn.com/gameplayer/gameplayer.aspx?game=flowerz。私は楽しみのためにそれを書いているのであり、どんな種類の割り当てや仕事に関連するもののためでもありません。このため、唯一の制限は私のコンピューター(8 GBのRAMを搭載したIntel i7コア)です。私に関する限り、他の場所で実行する必要はありません。 つまり、そのルールは次のようになります。 色とりどりの花でいっぱいの列があります。その長さは任意です キューは影響を受けません キューはレベルの開始時に生成されます 花は1つまたは2つの色を持っています。 2つの色がある場合、外側の色と内側の色があります。2色の場合、外側の色がマッチングに使用されます。 一致する場合、外側の色は消え、花は内側の花と同じ色の単一色の花になります。 ゲームの目標は、同じ色の3つ(またはそれ以上)のマッチを作成することです 単色の花がマッチの一部である場合、それは競技場から削除され、空のスペースが作成されます 単色の花と2色の花の外側の色を一致させることができます。この場合、単色の花は消え、2色の花の外側の色は消え、内側の色は残ります キューが空であるときは、ラウンドを獲得し、少なくとも1つの空のスペースが余っています カスケード一致が可能です。カスケードは、3つ(またはそれ以上)の外側の花が消え、その内側の色が3(またはそれ以上)の花の別のチェーンを形成するときです。 競技場は常に7x7です フィールドのいくつかのスペースは岩で覆われています あなたは岩の上に花を置くことはできません キューにはスペードを含めることもできます。スペードを使用して、配置した花を空いているスペースに移動できます。 スペードを使用する必要がありますが、実際には花を動かす必要はありません。花を元の場所から直接戻すことは完全に合法です。 キューには、色付きの蝶を含めることもできます。花にこの蝶を使うと、花は蝶の色になります 2つの色を持つ花に蝶を適用すると、花は1つの色、つまり蝶の色のみを取得します。 あなたは空のスペースやすでにこの色を持っている花に蝶を無駄にすることができます フィールドをクリアしてもゲームに勝つことはできません ソルバーの目標は単純です。できるだけ多くの余ったスペースをフィールドに残して、キューを空にする方法を見つけます。基本的に、AIがゲームをプレイします。ソルバーの出力は、見つかった移動のリストです。私はスコアには興味がありませんが、できるだけ長く生き残るために、可能な限り多くのオープンスペースを残す動きに興味があります。 言うまでもなく、キューが大きくなるほど検索スペースは急速に大きくなるため、ブルートフォースは問題外です。キューは15から始まり、2、3レベルごとに5ずつ増えます。そしてもちろん、最初の花を(0,0)に配置し、2番目の花を(0,1)に配置することは、特に最初の花を(1,0)に配置し、2番目の花を(0,0)に配置することとは異なります。フィールドには、以前のラウンドからの花がすでに生息しています。そのような単純な決定は、それを作るかどうかの違いを作ることができます。 私が持っている質問は次のとおりです。 これはどのような問題ですか?(巡回セールスマン、ナップザック、またはその他の組み合わせの問題を考えてください)。これを知っていると、私のGoogle風味が少し良くなる可能性があります。 どのようなアルゴリズムで良い結果をすばやく得ることができますか? 後者について:最初に、独自のヒューリスティックアルゴリズムを記述しようとしました(基本的に:キューを知っている場合、どうすれば解決できますか?)。 私は遺伝的アルゴリズムを使用することを考えていました(少なくともそれを使用する方法を知っているため...)が、ボードのバイナリ表現を決定する際にいくつかの問題があります。次に、クロスオーバーの問題がありますが、これは、順序付けされたクロスオーバー演算子または同様のタイプの操作で解決できます。 私の推測では、ソルバーは常にボード構成とそれが空にしようとしているキューを知っている必要があります。 ニューラルネットワークやファジーロジックシステムなどの他のヒューリスティックアルゴリズムをいくつか知っていますが、どれが最も適切であるか、または当面のタスクにより適した他のものがあるかどうかを知る経験がありません。
10 c#  algorithm  ai  puzzle 

1
C#/ XNAハードウェアマウスの位置を取得
私はC#を使用していて、ハードウェアマウスの位置を取得しようとしています。最初に試したのは、使いやすいシンプルなXNA機能です。 Vector2 position = new Vector2(Mouse.GetState().X, Mouse.GetState().Y); その後、マウスの描画も行い、Windowsハードウェアマウスと比較して、xnaが提供する座標を持つこの新しいマウスは「ずれ」ています。つまり、数フレーム遅れているということです。たとえば、ゲームが600 fpsで実行されている場合、呪いは反応しますが、60 fpsのソフトウェアではマウスの遅延は許容できなくなります。そこで、ハードウェアマウスだと思ったものを使ってみました。 [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetCursorPos(out POINT lpPoint); しかし、結果はまったく同じでした。私はまた、Windowsフォームカーソルを取得しようとしましたが、これも行き止まりでした-動作しましたが、同じ遅延がありました。xna機能をいじくりまわす: GraphicsDeviceManager.SynchronizeWithVerticalRetrace = true/false Game.IsFixedTimeStep = true/fale やや明白な理由で遅延時間を変更しましたが、肝心な点は、それがデフォルトのWindowsマウスの背後にあるにもかかわらずです。一部のゲームでは、ハードウェアアクセラレートマウスのオプションが提供されていることがわかりました。誰でもそれを達成する方法についていくつかのリードを与えることができますか?

1
スクリーンスペースからワールドスペース
私のゲームの世界では、x軸が左から右、y軸が上から下、z軸が画面の外に出ている2Dゲームを作成しています。 私のゲームの世界はトップダウンですが、ゲームは少し傾いてレンダリングされます。 私は、ワールドスペースからスクリーンスペースへ、またはその逆への投影に取り組んでいます。前者は次のように動作しています: var viewport = new Viewport(0, 0, this.ScreenWidth, this.ScreenHeight); var screenPoint = viewport.Project(worldPoint.NegateY(), this.ProjectionMatrix, this.ViewMatrix, this.WorldMatrix); NegateY()XNAのため、拡張メソッドは、それがのように聞こえるまさに行い、Y軸は、トップの代わりに、上から下へ下へと走ります。上のスクリーンショットは、これがすべて機能していることを示しています。基本的に、私は3D空間に多数のポイントを持ち、それを画面空間にレンダリングします。カメラのプロパティをリアルタイムで変更して、新しい位置にアニメーション表示することができます。明らかに、私の実際のゲームはポイントではなくスプライトを使用し、カメラの位置は固定されますが、それに到達する前に、すべての計算を適切に実行しようとしています。 今、私は逆に変換しようとしています。つまり、上の画面空間のxとyの点を指定して、ワールド空間の対応する点を決定します。たとえば、緑色の台形の左下にカーソルを合わせると、ワールドスペースの読み取り値は(0、480)になります。Z座標は無関係です。または、むしろ、ワールド空間にマッピングし直すとき、z座標は常にゼロになります。基本的に、私はこのメソッドシグネチャを実装したいと思います。 public Vector2 ScreenPointToWorld(Vector2 point) 私はこれを機能させるためにいくつかのことを試みましたが、運が悪いだけです。私の最新の考えでは、Viewport.Unproject異なるz値とfar z値を使用して2回呼び出し、結果を計算Rayし、それを正規化してから、基本的に私の世界の地上レベルを表すRayとの交差を計算する必要がありPlaneます。しかし、私は最後のステップで立ち往生し、私が物事を過度に複雑にしているのかどうか確信が持てませんでした。 これを達成する方法について誰かが正しい方向に私を向けることができますか?
10 xna  c#  matrix  projection  screen 

2
射影テクスチャと遅延照明
で、私の前の質問、私は延期照明と投影テクスチャリングを行うことが可能であるかどうかを尋ねました。現在(半年以上後)、同じものの実装に問題があります。私はこのテクニックをライトパスに適用しようとしています。(私のプロジェクターはアルベドに影響しません)。私はこのプロジェクターを持っています投影マトリックスを見る: Matrix projection = Matrix.CreateOrthographicOffCenter(-halfWidth * Scale, halfWidth * Scale, -halfHeight * Scale, halfHeight * Scale, 1, 100000); Matrix view = Matrix.CreateLookAt(Position, Target, Vector3.Up); どこhalfWidthとhalfHeightテクスチャーの幅と高さの半分です、Positionプロジェクターの位置で、targetプロジェクターのターゲットです。これは問題ないようです。私はこのシェーダーでフルスクリーンクワッドを描画しています: float4x4 InvViewProjection; texture2D DepthTexture; texture2D NormalTexture; texture2D ProjectorTexture; float4x4 ProjectorViewProjection; sampler2D depthSampler = sampler_state { texture = <DepthTexture>; minfilter = point; magfilter = point; mipfilter …

3
何かが起こったときに音を鳴らす良い方法は?この音はどうですか?
だから私は自分のクラスがどれだけモノリシックになるかを考えていました。たとえば、CharacterクラスのJumpメソッドでは、サウンドエフェクトオブジェクトへの参照があり、それを再生できます。それ自体は問題ありませんが、物理学、アニメーション、衝突などを考慮に入れると、Jumpメソッドは巨大になり、Characterクラスには多くの異なるものへの多くの依存関係があります。それでも、これで問題ない可能性があります。ただし、キャラクターがジャンプしたときにサウンドを再生したくない場合はどうすればよいでしょうか。さて、コードのごちゃごちゃした混乱の中から特定のコード行を見つけてJump、コメントアウトするか、何でもしなければなりません。 それで..と思っていました。 代わりに、ある種のAudioSystemクラスがあり、他のクラスに関心のあるランダムなイベントをサブスクライブした場合はどうなるでしょうか。たとえば、クラスにはメソッド内のクラス内で発生CharacterするJumpedイベント(静的だと思います)があるかもしれませんCharacter。次に、Characterクラスは、キャラクターがジャンプしたときに再生される小さな音響効果について何も知りません。これAudioSystemは、静的イベントを使用してゲーム内で発生する特定のイベントでサウンドエフェクトをフックするためにプログラマが後退できる巨大なクラスです。その後、それはのようなサブクラスにして分離することができ大きすぎるなった場合はEffectsAudioSystem、BackgroundAudioSystem、AmbientAudioSystem、エトセトラ。 次に、ゲームのオプションで、これらの種類のサウンドを有効または無効にするチェックボックスを設定できます。実行する必要があるのは、単純な単一のブールフラグでその1つのシステムを無効にすることだけです。このシステムの考え方は、物理学、アニメーションなどにも拡張でき、プレーヤーのアクションから生じるゲームの応答のほとんどが、これらの精巧で分離されたシステムを通じて接続されます。 さて、私の質問は少しあいまいかもしれませんが、この種のことはどのように聞こえますか?このようなシステムについては、これまであまり話を聞いたことがありません。これは、今のところコーディングがまったく行われていないので、頭の中で問題になっているので、おそらく「理論的には良いが実際にはない」種類の取引の1つでしょう。この種のシステムは、より大きなゲームで機能するのでしょうか、それとも最終的に故障して、元のシステムよりもさらにスパゲッティの混乱になるのでしょうか?
10 c#  architecture  sound 

2
ゲーム内の死んだオブジェクトを効果的に取り除く?
forループまたはforeachループ(問題ではない)を使用して、オブジェクトを更新または描画する必要があるときにすべてのオブジェクトをループします。ただし、オブジェクトが強制終了された場合は、コレクションから再度削除してください。 これを行うには、オブジェクトをデッドオブジェクトリストに追加し、すべてが描画および更新されたら、このリストのすべてを調べ、リスト内のオブジェクトも元のソースから削除します。 これを行うより良い方法はありますか?
10 xna  c#  xna-4.0 

3
XNAで大規模な地形をレンダリングする効率的な方法
プレイヤーに大きなスペースを必要とするXNAゲームを作成しています。現在、私が使用しているテスト高さマップは4096x4096で、4ビットBMPとして保存されています。 私がやろうとしているのは、その巨大なハイトマップファイルを取得して、ゲームでレンダリングすることです。私が遭遇している問題は、利用可能なメモリの大部分を使用するため、テレイン全体を一度にメモリにロードするのは非効率的であるという事実です。 私が遭遇したもう1つの問題は、XNA内でハード制限が設定されているため、1つのプリミティブでテレインをすべてレンダリングできないことです。 そうは言っても、私はいくつかの解決策に出くわしましたが、それらすべてを以下にリストしました: 現在のユーザーの位置に基づいたレンダリング-基本的に、ユーザーが世界中のどの方向を向いているかに関係なく、ユーザーの周りに正方形を描画します。ユーザーが表示しないスペースをレンダリングしているため、これも私が望んでいたものとは異なります。 ユーザーの向きと位置に基づいたレンダリング-ハイトマップのどのピクセルがレンダリングされることになっているはずの三角形を取得する式を見つけましたが、これは非常に難しいことが判明しました。 テレインを複数のチャンクに分割し、どのチャンクがユーザーに最も近いかをレンダリングします-まだ人々に表示されないチャンクをレンダリングしているため、まだあまり効率的ではありません。そして、高さマップをいくつかに分割する必要があり、スケーラビリティが大きな問題になるため、これは作業集約型です。 それらの解決策を試した後、私は何をすべきかについての考えが新鮮です。人々がこれらの複雑なアルゴリズムを実行するように言われているいくつかの回答を受け取りましたが、私はそれらを行う方法にさえどうしてもわからないだけです。 したがって、基本的に私はXNAで巨大な地形を最大限の効率でレンダリングするシンプルで簡単な方法を求めています。 私はゲーム開発全般については初心者ですが、それが有望であると思われる場合は、調査に応じます。 更新1: geoclipmappingメソッドを調査した後、私はそれでコーディングを始めました。私はすべての数学を終えて、ゲームが実行されます。しかし、それは非常に非効率的です-これはおそらく私の側の悪いコーディングです。それは2FPSで実行され、私のCPUのコア全体を使用します。コードを改善するつもりですが、さらにサポートが必要になると思います。TerrainマネージャークラスのコードのPastebinを次に示します。より効率的になった場合は、後でさらに結果を投稿します。
10 c#  xna 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.