【UE4】Unreal Engine 4 初心者質問スレッド part6
■ このスレッドは過去ログ倉庫に格納されています
ブループリントは基本スパゲティになる、簡潔に書こうと思うと終わらないよ >>723
ローグライクだから、移動中はキー入力を受け付けないようにしたいという事かな
キー入力したら移動処理中のフラグを立てて、そのフラグでブランチすればすれば良いんちゃうか 結局聞きたい事は簡略化の話じゃなくて、シンプルな処理待ちの話か
一個のノードをペタって終わりとか諦メロン 僕も質問してみまんこ(^^
UE4でゲーム作るときにシューティングとか2Dアクションとか作れまふよね(^^
それの2Dアクションのspriteを変える方法を教えてくらふぁい(^^
僕は初心者なので優しくしてでふ(^^
ボッキング!(^^ 近いのはスイッチかな
それでもキーボードイベントで変数に代入してスイッチに渡すから、キーボードイベントから処理中ブランチ通して移動処理に行くのと対して変わらんな 皆さんこんにちは!
unreal engine4をはじめたばかりなのですが、複数のテクスチャーをブレンドして
貼りたいと思い試したのですが、うまくいかなので質問させて下さい。
まずテクスチャーを重ねたいのでTexturesampleを複数だしました。それをmultiplyで
重ねたいと思い一つめのTexturesampleノードのテクスチャーを
マテリアルエクスプレッションテクスチャーをダブルクリックして中に入りパスを指定して
マップを貼りました。
同じように2個目のTexturesampleノードにもテクスチャーを貼ったのですが、最初の
ノードのテクスチャーも一緒に2個目と同じものに更新されてしまいました。
画像パスを変更すると、複製前のテクスチャーも変更されてしまいます。
どうしたら複数のテクスチャーをマップすることが可能になるでしょうか?
保存する時に
アセットDefaultTexture(DefaultTexture.uasset)の保存に失敗しました
って出るのでそれがいけないのでしょうか?どうして保存できないのかも分かりません。
基本的な部分かと思うのですが、アドバイスお願いします。 皆さんの意見を参考にローグライクのマス移動についてこの画像のようなノードを組みました。
これで100単位でのみ座標が動くはずだと思ったのですが小数点以下がずれるどころか「102」とか進んだりしてしまいます。
たくさん移動しているとその積み重ねでどんどんずれていき困っているのですが、100きっかり動くというのは無理なんでしょうか。
違う方法があれば教えて下さい。https://imgur.com/a/JHiTeVv.png あー関数化を知らないんじゃないかと思ってたら、その通りだったな
オレならW上からinput matiまでを関数にしてキーボードイベントの後ろに付けるわ
なんでズレるのかは知らん >>730
AI Move ToのAcceptance Radiusを0にしてみたら ai moveって関数化出来んのやな
マクロ化は出来たんで纏めてみた
ちゃんと動作検証してないんで間違ってたらゴメンやで
https://i.imgur.com/GieO27T.jpg
https://i.imgur.com/CY6VPh0.jpg 15年前くらいにMaya触ってたレベルなんですが
建築系するとしてC4Dとun real engineどっちが入りやすいですか?
フリーのオブジェクトがインポートしやすい方というか
壁紙ぱっと変更したりテーブルの柄変えたりなんですけど
もう知識がなくなって0ベースから始めたいんですが UEはモデリングソフトじゃないからC4Dの比較対照にはならない。 >>735
なるほど
別ツールでモデリングして引っ張ってくるのが主流なのか
ありがとござます >>734
autocadの図面を読み込めるmax >>733
ご丁寧にありがとうございます!
おかげさまでできました!
マクロを全く使ったことがなかったんで、使いこなせるように勉強してみます。。
感謝感謝 >>732
僕のノードのまま、cceptance Radiusを0にしたらなぜか動かなくなってしまったんですが
733さんのやり方だと0にしても動きました!
ありがとうございます。
皆さん本当になんでも知っていて尊敬します。 >>733
色々とテストをしていたのですが、移動が終わる前に再びボタンを押してしまうと、座標がずれてしまいます。
おそらくAI move to の実行ピンからSequenceにつなぐと、移動の処理を始めた段階で、Is Moving のチェックが外れてしまい、
移動中も入力を受け付けてしまうのだと思います。
なので実行ピンからではなくOn successからSequenceに繋げばうまくいくだろうと思ったのですがAcceptance Radiusが「0」だと1マス動いた時点で
どちらにも動けなくなってしまいます。
100移動の指示をしても実際には誤差が生じ、サクセスに抜けなくなってしまうのではないかと思ったのですが、現在位置をTick直下でPrint stringして監視していると、きっかり100動いているんですよね。
どうしてサクセスに流れないのでしょうか。Acceptance Radiusを上げれば動けなくなることはないですが座標がずれてしまいます。 ue4のc++の.build.csにある
publicのAddRangeに ProceduralMeshComponentを 追加して
ほかのhファイルでProceduralMeshComponent.h
をincludeしたいのですが、できません(表示されない)
build.csに名前を追加するだけでは足りないことがあるのでしょうか?
調べても出てこないことでしたので、
もし知っている方がいたら教えていただけると幸いです。 わかりにくくてすいません
includeできるものに
ProceduralMeshComponent.hがないということです ない、というのがよくわからない。インテリセンスで補間されないってこと?
それともインクルードするとエラーが出るということ?
プラグインはデフォルトで有効だから
ProceduralMeshComponentをDebugMenuDev.Target.csのPublicDependencyModuleNamesに登録して
目的のコードで#include "ProceduralMeshComponent.h"するだけだと思うけど >>740
0だと誤差で完了できない場合があるから少し遊びを持たせて、完了時に目的の座標に一度強制移動させるのが良いと思うよ >>744
Target.cs名はコピペしたものそのまま貼ったので無視して、自身のプロジェクト名ね インテリセンスでも補間されないですし
そのまま打ち込んでもソースファイルを開ませんというエラーになります >>747
エンジンのバージョンと、どうやってコードを書いてるかを教えて
あと実際にファイルが有るか確認してみて
Engine\Plugins\Runtime\ProceduralMeshComponent\Source\ProceduralMeshComponent\Public\ProceduralMeshComponent.h エンジンのバージョン 4.24
コードの書き方は書いている場所ということでしょうか?
(プロジェクト名).Build.csに初期から書かれているコードにプラスして、ProceduralMeshComponentをpublicdependencymodelnames.addRangeに
書き込みました。
またファイルを確認したところProceduralMeshComponent.hはありました。 >>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あたりから辿れそうな気はした ■ このスレッドは過去ログ倉庫に格納されています