【UE4】Unreal Engine 4 初心者質問スレッド part6
■ このスレッドは過去ログ倉庫に格納されています
>>745
なるほど!
それでやってみます!ありがとうございます >>749
実際にエラーの出てる#includeの書き方のほう、どういう記述している?
あと、念の為一度、エクスプローラーからプロジェクトファイルを右クリックのメニューにあるGenerate Visual Studio project filesをしておくのも良い ありがとうございます
Generate Visual Studio project filesを押したところincludeファイルに追加できました。
こういったプラグイン的なことはGenerate Visual Studio project filesを押さないとだめみたいなんですかね?
どちらにせよ助かりました
たびたびですがありがとうございました! >>752
単純にインクルードパスが通っていない場合などあるので、定期的にVSのプロジェクトファイルは作り直すのが良い IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0 プログラム実行中に非ライティングモードにしたいときはどうしたらいいのでしょうか?
コリジョン表示したいときはコマンドモードで「Show Collision」すればいいみたいな感じでできない?
まだライティングが未完成な状態でテストプレイしたいってときがあるんですよね。 >>755
コンソールコマンドで ViewMode Unlit >>750
>>733の者だが、とりあえずうまく行ったようで良かった
AI moveを使ったことがないので不具合あったようでゴメンね
因みになぜAImove使ってるの?
ちょっと調べた感じ、AImoveは障害物をよけて経路計算するノードみたいだけど上下左右に動くだけなら普通の移動でいい気がするんだが
ローグライクなターン制にするなら移動する全アクターで同期とらなきゃいけないからAImoveだとめんどくさそうだし
それともAImoveにそういう機能があるのかな 制作物の互換性ってあります?
win機かMac機かで運用悩んでるんですが
MacBook Pro16インチで制作中にカクツキはないけど1回フリーズして不安になって
ゲーム用のwinがあるからそっちに乗り換えようと思って
職場はMacだから両方で走らせたいんです
あとアセットとかwinの方が多いような気がしますが
基本的にwin運用の方が向いてますか? >>757
ありがとうございます。
AImoveを使用していた理由は、on succesがあり、処理が終わった時点で次のノードに流せると思ったからです。
でも思ったように機能しなかったので、試行錯誤した結果on succesで判断するのではなく、ブランチを使い判定するようにしたら思ったとおりの移動になりました。
とりあえずうまくはいったのですが、on succesを使っていないので、もはやAImove じゃなくても良いのですが。 すみません。
プレイヤーキャラクターではない、AIコントローラーで動くキャラクターにspringarmでくっつけたのですが、そのカメラを一時的にメインカメラにする方法ってありますか。 Set View Target with Blend >>761
ありがとうございます。
固定カメラしか繋げないと思ってたのですが、
キャラクターを繋げば付随したカメラ適用されるんですね。 コマンド使わなくても描画モード変えられるよね?
F1234だったか、普通に1234だったかは忘れた UE4.25で作っているプロジェクトが、すぐ落ちるようになってしまいました。
解決策わかる方いらっしゃいましたら、教えていただけるとありがたいです。
落ちたときに出るエラーメッセージは下記のとおりです。
よろしくお願いいたします。
Fatal error: [File:/Users/build/Build/++UE4+Licensee/Sync/Engine/Source/Developer/Apple/MetalShaderFormat/Private/MetalShaderCompiler.cpp]
[Line: 716] Failed to extract Metal compiler search directories >>767
内部で環境チェックしてるようなので、環境をかえてしまったのでは?
Macのことは分からないのでチェック関数内のコメントを抜粋しておくよ
// Fetch the version of the metal frontend for ShaderPlatform
// We are only interested in the (metalfe-XXX.X.XX) part.
// xcrun -sdk <sdk> metal -v
// For example (in xcode 11.1):
// xcrun -sdk macosx metal --version
// Apple LLVM version 902.9 (metalfe-902.9.58)
// Target: air64-apple-darwin19.0.0
// Thread model: posix
// InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/metal/macos/bin >>768
ありがとうございます。言われてみれば思い当たる節がありまして、落ちるようになる直前、Xcode(mac,iphone向けの開発をするソフトウェア)をインストールしました。xcodeアンインストールするしかないんですかね。したところで元に戻るかわからないですが。 >>769
わからんけど、xcode入れてても要求されている環境にすれば落ちないと思うよ 数日前に始めたけどxcodeって入れないとダメってエラー吐かれたんだが
もしかして入れなくてもUE動くの? ue4のlinetracebychannelで
カメラ座標からレイを飛ばすとレイを可視化したときに明らかにカメラから飛んでるようにみえないのですが、
これはue4 の使用なのでしょうか?
ちなみにカメラ以外がレイを飛ばすときれいにいきます 何をもって明らかになのか分からんので仕様かどうかも答えられなかろう
画像貼るなり、どうやってカメラの座標取得してるのかなど情報がないと >>771
バイナリを作るのに、コンパイルツールが必要だから、Xcode は必要なのでは?
それに何かのツール・拡張機能などが、ソースコードをコンパイルするかも知れないし、
普通、開発者には、Xcode は必要
マルチプラットフォームのツール・アプリなどは、
バイナリじゃなく、GitHub をclone しろなど、ソースコードで配布する開発者もいるから >>771
ビルドに使われるXcode command line toolsだけあれば大丈夫
Xcode本体は入れる必要はない キーボードイベントについて質問です。
キーを押したときと離したときに一度だけ実行が流れるというシステムだと思うのですが、
キーを押している間だけ毎フレーム実行し、離したら止まるという仕組みはどうしたらできますでしょうか。 Sequenceの使いみちについて教えて下さい。
Sequenceについて調べてみると、then1から順番に実行するが、故意に遅らせることがなければ、ほぼ同時に実行されます。
とあります。でもこれって直列につなぐのと同じではないですか?どういう違いがあるのでしょうか。使いみちも教えていただきたいです。 >>777
Pressedでbooleanをtrue、Releasedでfalseにして、Tickでbooleanがtrueの場合に処理をする
TickでIsInputKeyDownをつかって常時監視する Sequenceの使い道とかイベント処理とかの質問を俺が見て思うのはUE4についての質問ではなく、コードの組み方についての質問だと思うんだが
この手の質問は自分で調べで考えた方が早いで >>778
個人的に使ってる方法として処理ごとに分けている
例えばブランチでtrueの場合のみ追加で処理をする場合、直線的に実装すると
ブランチのfalseのピンも正しく接続する必要があるのに対して
SequenceならThen0の直後にブランチを配置してtrueの場合は追加処理を行い
falseには何も繋げなければ、trueの場合でもfalseの場合でも必ずThen1に来るので楽だしミスしにくい >>779
IsInputKeyDownというのがあるんですね。使えそうです。ありがとうございます。
>>781
なるほど!確かにそういう使い方ができますね!勉強になります。ありがとうございます。 >>780
ご指摘ありがとうございます。
私のようにプログラム未経験でブループリントのみで始めてるものにとっては、なかなかそれが難しいんです。私のような方他にも沢山いらっしゃると思うので別スレ立てました。
よろしくお願いします。 すごく初歩的な質問で申し訳ないんですが
会社にUE導入しようかと考えてまして
WinとMacどちらの環境がいいですか?
職場はMacなんですがコスト的にはWinだと思いますし
元々Win触ってたので操作には支障ないのですが
ソフトウェア上、何か差異ありますでしょうか Macじゃないとダメな理由がなければWindowsかな
Macであるがゆえの問題解決に時間を取られそうっていうのと
情報の量、マシンスペックの拡張コストとかの面でもMacはマイナーかと
プラグインとかの対応数も少ないと思う
参考程度に
https://www.zugakousaku.com/archives/ue4_study/1132 >>785
ありがとうございます
Win運用の方が現実的ですよね こちらの記事にあるセルシェーダーなのですが、
途中から急にキャラクターのテクスチャが貼られています
これはどこかでセルシェーダーとキャラクターテクスチャの合成が行われているのでしょうか?
また行われているとすればどういった
合成になるのでしょうか?
マテリアル関係はどうも資料が薄く
多少なげやりになってしまいますが、
もしわかる方いたら教えていただけると幸いです すいません
記事のhttpは表記できないみたいなので
ue4 誰でもわかるセルシェーダー入門 です >>787
記事画像中の真っ白なBaseTextureノードに元のキャラクターのテクスチャを指定したと思われます なるほどです
ありがとうございます
ということはこの記事だと
セルシェーダーを適用したい
オブジェクトごとにセルシェーダー用のマテリアルを書かないといけない感じなんですね。 共通項の多いマテリアルの場合、必要部分のみをパラメータ化してマテリアルインスタンスとして使い回すと快適ですよ なるほどそれは便利かもしれないですね
ただテクスチャからマテリアルを作るのはできると思いますが、その逆が存在しないみたいなので、どうしようかというところですね。 それは今関係ないのでは?
上の場合はテクスチャノードをパラメータ化して色んなキャラに適用すればいいって話なのですが すいません自分の理解が足りてないだけかもしれませんが、おそらくパラメーターのやりとりって
適用したいオブジェクトのbpでcreate dyndmic
material instanceをよんでそこからset textureパラメーターバリューでテクスチャを入れることで
セルシェーダーのパラメータにしたテクスチャの部分に自分のテクスチャいれるのかなと思いました なのでテクスチャが必要かなと 助けて!!!!テストプレイでキーボードのセミコロン(;)を押すと
デバッグの文字がでてすごい邪魔…どうにかしようと設定画面のキーショートカットとか探してdebugやらデバッグやら検索かけても
それらしい項目が見つからない
どこにあるの・・・もう探すの疲れたよ >>795
とりあえず他にもあるかもしれないけど、方法は2つで
・自身のプロジェクトでキーバインドを上書きする
・エンジン側のキーバインドを消す
●自身のプロジェクトでキーバインドを上書きする場合
Config\DefaultInput.ini
の最後に
[/Script/Engine.PlayerInput]
-DebugExecBindings=(Key=Semicolon,Command="ToggleDebugCamera")
を追加
●エンジン側のキーバインドを消す場合
Engine\Config\BaseInput.ini
内にある
+DebugExecBindings=(Key=Semicolon,Command="ToggleDebugCamera")
を探して、先頭に ; をつけてコメントアウトする
後、やるとしたら違うキーに変更するという手もあるかなぁ >>796
おお神よ
なんと感謝していいか
感謝の言葉もありません…本当にありがとう!! ue4 って
マテリアルからテクスチャに変換は不可能なんですかね? もしくはマテリアルノード内で
グレイマンのマテリアルなんかを使いたい場合
はどうすればよいのでしょうか? 「アクターオブジェクト参照の配列」で複数のアクターをセットした変数からは、インデックスを指定することで特定のアクターを取得することができますが、それと同じように
「アクターオブジェクト参照からベクターへのマップ」で複数のアクターをセットした変数から、ベクターを指定して、特定のアクターを取得する方法はありますでしょうか。 IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip >>800
ActorをキーとしてるVectorのマップを逆引きするってこと?
もしそうならVectorは誤差の出るものなので一見同じ値でも見つからない場合があるだろうから別の方法を模索したほうが良い
何をしようとしてるのか分かればアドバイスできると思うよ >>802
なるほど。やはり座標はずれてしまうものなんですね。
おっしゃる通り別の方法でやってみます。ありがとうございます。 Xinputコントローラー、Bボタンを決定、Aボタンをキャンセルにしたいのですが、
プロジェクト設定で一切コントローラーの設定をしていない状態でも、Aボタンで決定が実行されてしまいます。
このAボタンで決定が実行されてしまうデフォルト設定を、解除、もしくは変更する方法はありませんか? >>804
おそらく、UMGのボタンに対しての話だとはおもうけど
C++の場合は、対応するプラットフォームのInput.cpp内でGetGamepadAcceptKey、GetGamepadBackKeyを実装することで可能
BPではどうやるのか不明、ソース見る限り変更する口がないのでできなさそう >>805
プロジェクト設定やBPの範囲で設定を変更するのは難しいのですね。
C++でそれらしき箇所を入れ替えてみたのですが、私の触り方がおかしいらしく上手くいかなかったので(プログラムは全く無知なので)ここは後回しにすることにします。
ありがとうございます! 「Cast to」 でとあるアクターブループリントから変数だけ参照したいだけのですが、「Cast to アクターBP名」ノードで変数を呼び出そうとするとObjectになにかつなげと言われます。
試しに「GetOwner」をつないでみたのですがうまく機能しませんでした。なぜでしょうか。 >>807
Castは何者かわからないオブジェクトを何者かにする物なので
目的のアクターのインスタンスオブジェクトが分かっているなら使う必要ない >>808
他のBPの変数を参照すために使うものじゃないってことですかね。
他のBPの変数を参照するにはどうしたらいいのでしょうか。 オーバーラップしたアクターとかを繋いでみて、そのアクターとキャストしたいBPが一致すればキャストできて、そのアクターの変数とかいじれる >>810
AというアクターBPとBというアクターBPががあったとして、AとBが接触しないとキャストできないということでしょうか。 >>811
そのBP使っているアクターを特定できればいい。他から操作キャラクターをいじるならGet player pawnとか、重いらしいけどすべて見つけるならGet All Actors of Classとか >>811
そんなことはないよ
Actorは抽象クラスといわれるような存在で、そのまま使われることはなく基本的には継承して扱われる
Castに関してはC++の継承とポインタの話なのでそこを調べたほうが正しい、が
例えばActorを継承したMyActorをレベルに配置し、そのアクターをレベルブループリントで参照
(アクターを選択した状態で、ブループリントエディターの右クリックメニューで参照を出すやつとか)する場合は何者かわかっているので、MyActor自身が持ってる変数にアクセスできる
つづく GetActorsなどで取得した場合は、Actorとして参照するので、Actorが持ってる変数にはアクセスできるがMyActorとはわかっていないのでMyActorがもってる変数にはアクセスできない
ここで、Actorを入力としてMyActorとしてCastが成功すればMyActorと認識できてMyActorの変数にアクセスできるようになる
もちろん違うActorを入力に渡すと失敗する
例でGetActorsを出したけど基本的には使わないように このへんは文章で説明してもすごいわかりにくいからどうしたものかね? アセットブラウザからアニメーションシーケンスを開くとスケルトンツリーが見れますが
ボーンを選択すると詳細タブにそのフレームでのボーンのトランスフォームが表示されると思います
0フレーム地点でいいのですが、このトランスフォームの値をブループリントかC++で取得する方法はありますでしょうか
プレーヤーのトランスフォームではなくアニメーションアセットのボーンのトランスフォームが必要なのでインターフェースが見つからず苦戦しています >>815
とても丁寧に解説いただきありがとうございます。完全に理解したわけではありませんが、なんとなくはわかりました。
プレイヤーポーンとかプレイヤーコントローラーとかレベルブループリントとか、そういうアクセスしやすいところにグローバルで使いたい変数を集めてそこで管理するとかのほうがいいんですかね。 わからないことが次から次に出てくるんで個人レッスンしてもらいたい。 >>812
Cast to A がプレイヤーならかんたんなんですけどね。
プレイヤーではないのでObjectにつなぐものがないんですよね。Cast to A をしてる時点でObjectに何も繋がなくてもAだよわかってよ。って思うんですけどね。 >>819
どんな感じがわからんけど、変なやり方だと、BeginplayでAがplayerをキャストして自分自身を渡せばいい
playerにActorの変数作っとけば、Selfとかでぶちこめるでしょ
色々とやってみるが吉 >>817
グローバルで使いたい変数などはゲームの内容によって異なってくる
GameInstanceがよかったりGameModeがよかったりGameStateがよかったりもする >>819
なにか抽象的に扱われているオブジェクトを具象化するのに必要なのがCastなのだから
指定されないとわからないのは必然なのだが >>818
自分で調べて解決する能力をつける努力をするべき >>816
答えは知らないのだけどUAnimSequence::GetBonePoseあたりから辿れそうな気はした すみません質問させていただきたいです。
プレイヤーや敵にヒットした矢やボールなどが引っ付くようにしたいのですが、ヒットしたメッシュ位置にくっつけるようなことは可能なのでしょうか。
ヒット位置はライントレースなどで取れますし、ボーンやソケットに対してであれればアタッチできるので
ざっくりとくっつけることはできるのですが、腕や足など大きく動く位置にヒットした場合に見た目が変になります。
メッシュの特定の位置に対して(法線基準のようなイメージ?)しっかりと引っ付く仕組みが作りたいのですが、
何か良い方法はありませんでしょうか。
方法や、参考情報などわかる方がいましたらよろしくお願いいたします。 >>820
そんなやり方もあるんですね。参考にさせていただきます。
ありがとうございます。 >>823
GameInstance,GameMode,GameStateの違いについても調べてみますありがとうございます。
はい、おっしゃるとおりその能力は必須ですね。できる限り自分で調べて、自己解決する能力をつけるようにします。 海のようなフィールドに浮かんでいる箱の中身を自前カッターで開けば、そのまま中身をイジれる
海底に沈んでずぶ濡れの箱を釣竿で釣った時は一度乾燥させて形状を整える必要がある >>825
ヒットした位置とそのコリジョンが属してるボーンとのオフセットを毎回加算してあげるとかではなくて? >>824
ありがとうございます。できました。
参考までにこんな感じです
FTransform Hoge::hoge( UAnimInstance* AnimIns, UAnimSequence* AnimSeq ) const
{
FCompactPose pose;
pose.SetBoneContainer( &AnimIns->GetRequireBones() );
FBlendedCurve curve;
curve.InitForm( AnimIns->GetRequireBones() );
FAnimExtractContext context;
AnimSequence->GetBonePose( pose, curve, context );
return pose[FCompactPoseBoneIndex(0)];
} >>829
その方法で一応くっつくにはくっつくのですが、
メッシュの変形が激しい部位だと、なんか肉の上でぐりぐり動いたり、浮いたりしてしまう状況になります……
しかしやはりボーンにくっつけるほうがよさそうですかね……
現状メッシュとボーンのウェイトとかが荒すぎるのかもしれません……
ちょっとそっちの方向での調整も考えてみます……
ありがとうございます。 まったく試してないけど、
ヒットした瞬間のトランスフォームとボーンかソケットのトランスフォームの差を取って、アタッチすれば何とかなりそうな雰囲気は感じるんだけどなぁ ue4のssr機能使わずに自分でssrを実装したいのですが、可能なのでしょうか? エスパーだが
トランスフォームがワールド基準かアクタ基準かボーン基準かのところで間違っている
スケルタルメッシュの物理アセットが変でコリジョンの位置が想定外の場所に存在
そもそもスケルタルメッシュじゃなくてカプセルにアタッチされている
のどれかだと予想 いろいろ試してみたのですが、やり直してみたところアタッチ関連の設定が間違っていたようです。
それに加えてボーンとメッシュのウェイトも雑だったため変なことになっていたようです。
解決しました! ありがとうございました! 特定の条件の時にキャラ同士のコリジョンを無効にしたいのですが何かいい方法はありますでしょうか
Set Actor Enable Clossionで無効にするとステージとの当たり判定まで完全になくなってしまうので
あくまでもコリジョンの処理は通常で、例外的に指定キャラ間でだけ無効にしたいです
もちろん通常時はキャラ同士もコリジョンさせたいので一律無効はできないです プロジェクト設定でコリジョンのプリセットを作って対応すればいいんじゃね Set Collision Response to Channelで部分的にコリジョンの応答を変えられるようです コリジョンってもしかして1フレームに一回しか呼ばない感じなんですか?
(オンコンポーネントBEGINoverlap)とかのイベント DirectinputのパッドとXinputのパッドを両方繋いでるとして、Xinputを優先させる方法ってある?
両方繋いでる人に箱コン反応しないって言われる アニメーションを再生させたいのだが、
今あるアニメーションは移動が含まれている
移動を消してアニメーションだけを再生させたいのですが、可能でしょうか? とあるタイミングで敵AIに7通りの行動のうち1つをランダムで行動させたいのですが、配列とRandom integer使うしかないでしょうか。 サードパーソンのサンプルに動くcube作ってキャラに衝突させるとカメラが一瞬ズームしてまた戻るという感じに挙動おかしくなるんですけど
これはどうやって阻止するんでしょうか? 極め本だと、UIのテキストに動的な文字列を設定したいときは、バインディングでプレイヤーの変数を渡していました。
レベルブループリントの変数を渡したいときはどうしたらいいのでしょう?
レベルブループリントそのものを受け取る方法が分からなくてうまくいかないです。
どなたか分かる方がおられたらお願いします。 vr開発というのは普通にゲームが作れれば、それほど難しいものではないですか? VRだからって、特別なスキルが必要というわけじゃないよ
テンプレもあるし
問題は市場がすげー小さいこと ある程度作ってる物が出来上がって来ると酔う酔わないはっきりしてくる どういうスキルが必要なんでしょうか?
ゴーグル高いからどんなものか分からんです ■ このスレッドは過去ログ倉庫に格納されています