ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ
その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止
初心者が親身になって初心者に教える。
又ググレの場合、何のキーワードでググるのか書いてね
●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
http://unity3d.com/jp/unity/faq
・MSDN
http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
※前スレ
【ゲームエンジン】Unity初心者質問スレBuild2
https://mevius.5ch.net/test/read.cgi/gamedev/1557293737/
探検
【ゲームエンジン】Unity初心者質問スレBuild3
■ このスレッドは過去ログ倉庫に格納されています
2020/01/11(土) 14:28:59.18ID:wPvGtAaQ
2ダーク王鍬大使 ◆SoVpkB15jY
2020/01/11(土) 15:14:33.35ID:HCTv2Y3e 質問イイでふか?(^^
変数の配列って宣言するときに要素数も決めなきゃいけないのでひょうか?(^^
あとから一つずつ足していくみたいな形に出来ないと困りまんこ(^^
変数の配列って宣言するときに要素数も決めなきゃいけないのでひょうか?(^^
あとから一つずつ足していくみたいな形に出来ないと困りまんこ(^^
3ダーク王鍬大使 ◆SoVpkB15jY
2020/01/11(土) 15:16:42.54ID:HCTv2Y3e ああ、List使えばいいんでふね…(^^
4名前は開発中のものです。
2020/01/11(土) 15:27:22.16ID:GoAReVTm2020/01/11(土) 15:43:20.40ID:wPvGtAaQ
前スレ995で質問した者です
アドバイスを元に、parentをnullにしてみると生成されたプレハブがキャンバス外なのか描写されなくなってしまいました
続いて生成後に新しく作成したキャンバスに親を変更すると実行後1回目だけ左端の意図しない位置にプレハブが生成され、その後通常に動作しました
その後も色々試したのですがまだうまく行きません
あとは
・先に位置を取得して新しいキャンバスにプレハブを生成(これだと頂いたアドバイスを活かせませんが・・・)
・デストロイ前に敵のイメージを透明にする
くらいしか思いつかないです
やりたい事はオブジェクトAの上にオブジェクトBを重ねて表示、Aが消えてもBは消えないという動作です
どうかアドバイスをお願いします
アドバイスを元に、parentをnullにしてみると生成されたプレハブがキャンバス外なのか描写されなくなってしまいました
続いて生成後に新しく作成したキャンバスに親を変更すると実行後1回目だけ左端の意図しない位置にプレハブが生成され、その後通常に動作しました
その後も色々試したのですがまだうまく行きません
あとは
・先に位置を取得して新しいキャンバスにプレハブを生成(これだと頂いたアドバイスを活かせませんが・・・)
・デストロイ前に敵のイメージを透明にする
くらいしか思いつかないです
やりたい事はオブジェクトAの上にオブジェクトBを重ねて表示、Aが消えてもBは消えないという動作です
どうかアドバイスをお願いします
6名前は開発中のものです。
2020/01/11(土) 15:59:21.80ID:1/8GPuaw >>5
aのワールドポスとってBの生成時にそれをセットすればいいだけじゃ?parentとかやると話ややこしくなる
aのワールドポスとってBの生成時にそれをセットすればいいだけじゃ?parentとかやると話ややこしくなる
2020/01/11(土) 16:16:16.56ID:wPvGtAaQ
>>6
レスありがとうございます
一度ポジションを取得する方法も自分なりにやってみたのですが、instantiateで取得したポジションを指定する方法がわかりませんでした、、
その時VisualStudioではvector3をtransformに変換することは出来ませんといったような警告がでてしまったいたと思います
new vector3を手書きで入力する事は出来るのですが、オブジェクトAの位置をposAに代入、それをInstantiateの引数に記述して反映させる方法がわかりません
Instantiate(プレハブ,posA)の様に書く方法はあるのでしょうか?
レスありがとうございます
一度ポジションを取得する方法も自分なりにやってみたのですが、instantiateで取得したポジションを指定する方法がわかりませんでした、、
その時VisualStudioではvector3をtransformに変換することは出来ませんといったような警告がでてしまったいたと思います
new vector3を手書きで入力する事は出来るのですが、オブジェクトAの位置をposAに代入、それをInstantiateの引数に記述して反映させる方法がわかりません
Instantiate(プレハブ,posA)の様に書く方法はあるのでしょうか?
2020/01/11(土) 16:17:01.56ID:ftB0znZP
2020/01/11(土) 16:19:56.60ID:joHWbw4j
>>5
Destroy前に透明にしておくのがわりと定石っぽいと思う
どうせ破壊時にSEとか演出入れる場合即Destroyはできなくなるし
数が増えてくるとDestroyしてInstantiateしてってやってると思ってるより重くなっちゃうのでしっかりプーリングするのを覚えるといいことづくめよ
Destroy前に透明にしておくのがわりと定石っぽいと思う
どうせ破壊時にSEとか演出入れる場合即Destroyはできなくなるし
数が増えてくるとDestroyしてInstantiateしてってやってると思ってるより重くなっちゃうのでしっかりプーリングするのを覚えるといいことづくめよ
2020/01/11(土) 16:27:37.00ID:wPvGtAaQ
2020/01/11(土) 16:35:55.39ID:eNMw2FnY
>>7
敵とダメージをuGUIに置いているとして、やりたいことをベタ書きするならこんな感じ
var enemy = 敵.GetComponent<Transform>();
var canvas = enemy.GetComponentInParent<Canvas>();
var damage = Instantiate(ダメージプレハブ, canvas.transform) as GameObject;
damage.transform.position = enemy.position;
敵とダメージをuGUIに置いているとして、やりたいことをベタ書きするならこんな感じ
var enemy = 敵.GetComponent<Transform>();
var canvas = enemy.GetComponentInParent<Canvas>();
var damage = Instantiate(ダメージプレハブ, canvas.transform) as GameObject;
damage.transform.position = enemy.position;
2020/01/11(土) 17:08:22.23ID:wPvGtAaQ
>>11
出来ました!ありがとうございます
この処理でも最初の一回が左端に表示されてしまったのですが、実行を押した瞬間に攻撃していたので処理が間に合わない(バグ?)みたいで、戦闘のスタートとストップボタンをつけて実行後すぐに戦闘開始しない様にしてみたら正常に動作しました
テキストを好きな位置に生成するという単純な事で半日使ってしまいましたが良い勉強になりました、ありがとうございました
出来ました!ありがとうございます
この処理でも最初の一回が左端に表示されてしまったのですが、実行を押した瞬間に攻撃していたので処理が間に合わない(バグ?)みたいで、戦闘のスタートとストップボタンをつけて実行後すぐに戦闘開始しない様にしてみたら正常に動作しました
テキストを好きな位置に生成するという単純な事で半日使ってしまいましたが良い勉強になりました、ありがとうございました
13名前は開発中のものです。
2020/01/11(土) 17:10:44.69ID:GoAReVTm14名前は開発中のものです。
2020/01/11(土) 17:12:42.45ID:GoAReVTm >>12
プレファブをhide状態で作っておいて、生成してからhide解除するという方法でいけるかもですね
プレファブをhide状態で作っておいて、生成してからhide解除するという方法でいけるかもですね
2020/01/12(日) 21:58:52.24ID:6ETev4FX
Lerp() と Slerp() で滑らかにオブジェクトを回転させたいんだけど、FixedUpdate() 内で使ったら、
それらの回転の終了を知るにはどうするんだろう?
FixedUpdate() 内であるタイミングで滑らかに回転してから次の処理を走らせたい。
そもそも 連続するフレーム内での Lerp() と Slerp() の使い方がわからない。
初心者サイト見ても、FixedUpdate() 内で動的に開始と終了ベクトルを指定するサンプルとかがない。
実践的にはどう使うの? それとも UniRXとか使うの?
それらの回転の終了を知るにはどうするんだろう?
FixedUpdate() 内であるタイミングで滑らかに回転してから次の処理を走らせたい。
そもそも 連続するフレーム内での Lerp() と Slerp() の使い方がわからない。
初心者サイト見ても、FixedUpdate() 内で動的に開始と終了ベクトルを指定するサンプルとかがない。
実践的にはどう使うの? それとも UniRXとか使うの?
16名前は開発中のものです。
2020/01/12(日) 22:05:48.90ID:GUfBc0Nv >>15
【Unity入門】LerpとSlerpの使い方と違い!自在に補間をかけよう
https://www.sejuku.net/blog/83510
公式
https://docs.unity3d.com/ja/current/ScriptReference/Vector3.Lerp.html
読んだ上での質問なのかな?
あ所でオブジェクト移動にfixed 使うのは何故?
【Unity入門】LerpとSlerpの使い方と違い!自在に補間をかけよう
https://www.sejuku.net/blog/83510
公式
https://docs.unity3d.com/ja/current/ScriptReference/Vector3.Lerp.html
読んだ上での質問なのかな?
あ所でオブジェクト移動にfixed 使うのは何故?
2020/01/12(日) 22:23:31.75ID:6ETev4FX
>>16 さっそくありがとう。
fixed は勘違いで、今処理を書いてるのは Update() だった…
教えてもらったリンクを見たけど、どうやら自分の要件に Lerp() とか Slerp() は適してないかな。
今悩んでた実装は、初代PSのトゥームレイダーみたいにプレイヤーがブロックを押したり、または持ち上げたりするところだけど、
プレイヤーがブロックに対して斜めだと、後々の制御が難しいから、一旦ブロックを押したり、持ち上げたりする正しいポジションに
滑らかに移動・回転させてから、ブロックを押したり、持ち上げたりする動作に移ろうとしてた。
というか、この通り実装すればいいだけか。
fixed は勘違いで、今処理を書いてるのは Update() だった…
教えてもらったリンクを見たけど、どうやら自分の要件に Lerp() とか Slerp() は適してないかな。
今悩んでた実装は、初代PSのトゥームレイダーみたいにプレイヤーがブロックを押したり、または持ち上げたりするところだけど、
プレイヤーがブロックに対して斜めだと、後々の制御が難しいから、一旦ブロックを押したり、持ち上げたりする正しいポジションに
滑らかに移動・回転させてから、ブロックを押したり、持ち上げたりする動作に移ろうとしてた。
というか、この通り実装すればいいだけか。
2020/01/13(月) 08:38:58.13ID:QiViT9Gr
Quaternion が難しすぎて滑らか回転の独自実装は無理だった…
ので Update() の中で Lerp を使うことにしたけど、
Lerp の終了判定はどうするの?
※speedは適当
// Z軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 0), speed * Time.deltaTime);
// Z軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 180, 0), speed * Time.deltaTime);
// X軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);
// X軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 270, 0), speed * Time.deltaTime);
上記の四つの処理の回転の終了判定が、それぞれ取りたい。
ちなみに以下では取れなかった。
// Z軸正方向
transform.rotation == Quaternion.Euler(0, 0, 0);
// Z軸負方向
transform.rotation == Quaternion.Euler(0, 180, 0);
// X軸正方向
transform.rotation == Quaternion.Euler(0, 90, 0);
// X軸負方向
transform.rotation == Quaternion.Euler(0, 270, 0);
ので Update() の中で Lerp を使うことにしたけど、
Lerp の終了判定はどうするの?
※speedは適当
// Z軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 0), speed * Time.deltaTime);
// Z軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 180, 0), speed * Time.deltaTime);
// X軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);
// X軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 270, 0), speed * Time.deltaTime);
上記の四つの処理の回転の終了判定が、それぞれ取りたい。
ちなみに以下では取れなかった。
// Z軸正方向
transform.rotation == Quaternion.Euler(0, 0, 0);
// Z軸負方向
transform.rotation == Quaternion.Euler(0, 180, 0);
// X軸正方向
transform.rotation == Quaternion.Euler(0, 90, 0);
// X軸負方向
transform.rotation == Quaternion.Euler(0, 270, 0);
19名前は開発中のものです。
2020/01/13(月) 10:48:51.44ID:Rcgjsxsv2020/01/13(月) 11:04:47.55ID:QiViT9Gr
>>19
終了条件は Quaternion Lerp (Quaternion from, Quaternion to, float t);
from が to に達した時が終了条件。
Z軸正・負方向、X軸正・負方向の4方向で頼む。
初心者サイトではたいてい "解説された軸の条件" だけでは動くが、実践ではまるで使えない。
単純な話だよ、"プレイヤーを東西南北の方向に滑らかに正対させる"
そして、正対する動作が完了してから、次の動作を開始させたい。
この処理が聞きたいだけ。
終了条件は Quaternion Lerp (Quaternion from, Quaternion to, float t);
from が to に達した時が終了条件。
Z軸正・負方向、X軸正・負方向の4方向で頼む。
初心者サイトではたいてい "解説された軸の条件" だけでは動くが、実践ではまるで使えない。
単純な話だよ、"プレイヤーを東西南北の方向に滑らかに正対させる"
そして、正対する動作が完了してから、次の動作を開始させたい。
この処理が聞きたいだけ。
21名前は開発中のものです。
2020/01/13(月) 11:46:21.42ID:Rcgjsxsv https://i.gyazo.com/60305b50083eeabb48e95021ff3d925d.png
これ見て理解して
単純にLerpの事理解してないと思うけど、Time.deltaTime という浮動小数点を使っている以上90度にはならない
最後のprint文表示すると分かるけど永遠と89.xxxxxと表示される
インスペクタは省略表示だからそれに惑わされないように
それから同じオブジェクトで複数軸の回転を行うと当然ながら「Quaternion.Euler(0, 90, 0)」では取れないのは分かるよね?
これ見て理解して
単純にLerpの事理解してないと思うけど、Time.deltaTime という浮動小数点を使っている以上90度にはならない
最後のprint文表示すると分かるけど永遠と89.xxxxxと表示される
インスペクタは省略表示だからそれに惑わされないように
それから同じオブジェクトで複数軸の回転を行うと当然ながら「Quaternion.Euler(0, 90, 0)」では取れないのは分かるよね?
22名前は開発中のものです。
2020/01/13(月) 11:52:55.77ID:eGNaRuP0 Lerpの終了条件って、別にLerpは発動したらずっと動く何かじゃないぞ?
たんに0-1のあいだでfrom,toの間の補完をしてくれるだけだぞ?
お前が次に進めるんだよ!
たんに0-1のあいだでfrom,toの間の補完をしてくれるだけだぞ?
お前が次に進めるんだよ!
23名前は開発中のものです。
2020/01/13(月) 11:54:05.76ID:Rcgjsxsv あ、あとStartに書いたのは
Mathf.Approximately(transform.rotation.eulerAngles.y , 90f) これやりたかったので
一応こちらでも判定は行けると思う
Mathf.Approximately(transform.rotation.eulerAngles.y , 90f) これやりたかったので
一応こちらでも判定は行けると思う
24名前は開発中のものです。
2020/01/13(月) 11:56:44.83ID:Rcgjsxsv >>22
だからその上にも書いたけど、浮動小数点をステップに浸かってるからずっとToまでやる訳ですよ
だからその上にも書いたけど、浮動小数点をステップに浸かってるからずっとToまでやる訳ですよ
2020/01/13(月) 12:15:46.59ID:QiViT9Gr
>>21
素晴らしい! 教えてもらった方法で自分がやりたいことが完全に出来た!
4個処理を書いてたのは、プレイヤーがブロックのどの方向に接触したかで、
処理を分岐させる為で、同時に処理するわけではなかった。申し訳ない。
いや、マジでありがとう。本当に理解している人から教えてもらえて、すごく助かった。
素晴らしい! 教えてもらった方法で自分がやりたいことが完全に出来た!
4個処理を書いてたのは、プレイヤーがブロックのどの方向に接触したかで、
処理を分岐させる為で、同時に処理するわけではなかった。申し訳ない。
いや、マジでありがとう。本当に理解している人から教えてもらえて、すごく助かった。
2020/01/13(月) 13:00:01.95ID:auL79zSW
>>21
単純にUnityのこと理解してないと思うんだけど
現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ
transform.position = Vector3.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime);
if(transform.position == target.position) // 移動完了処理
transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, rotSpeed * Time.deltaTime);
if(transform.rotation == target.rotation) // 回転完了処理
単純にUnityのこと理解してないと思うんだけど
現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ
transform.position = Vector3.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime);
if(transform.position == target.position) // 移動完了処理
transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, rotSpeed * Time.deltaTime);
if(transform.rotation == target.rotation) // 回転完了処理
27名前は開発中のものです。
2020/01/13(月) 13:52:22.60ID:Rcgjsxsv2020/01/13(月) 15:25:54.10ID:6zyx93de
(補間を求めているところにLookAt……?)
2020/01/13(月) 16:28:41.18ID:yBWGUThF
まぁ、本人が満足してるからOKだね。
30名前は開発中のものです。
2020/01/13(月) 16:29:23.93ID:Rcgjsxsv (ターゲットに向ける用途的に)
(って、読めないのかなぁ)
(って、読めないのかなぁ)
2020/01/13(月) 16:36:47.43ID:auL79zSW
(どう見ても移動と回転の補間としてMoveTowardsまで書いてるのにLookAtって言っちゃう人って…)
って、ごめんマジで教えて
LookAtで座標移動できたっけ?
なんでこの流れでLookAtが出て来るのか分からんぞ
って、ごめんマジで教えて
LookAtで座標移動できたっけ?
なんでこの流れでLookAtが出て来るのか分からんぞ
2020/01/13(月) 16:37:27.12ID:QiViT9Gr
2020/01/13(月) 17:04:23.60ID:QiViT9Gr
>>26
は質問の意味が理解できなかったんだね。スマンスマン。
"プレイヤーを東西南北の方向に滑らかに正対させる"
なので、Lerp が正解だ、RotateTowards では希望の動作にならない。
しかし皆ありがとう。理解するのにとても助けになった。
は質問の意味が理解できなかったんだね。スマンスマン。
"プレイヤーを東西南北の方向に滑らかに正対させる"
なので、Lerp が正解だ、RotateTowards では希望の動作にならない。
しかし皆ありがとう。理解するのにとても助けになった。
2020/01/13(月) 17:31:10.04ID:6zyx93de
(あ、これ一人で質問して一人で回答してる系の痛い奴だ……前も見たことある)
35名前は開発中のものです。
2020/01/13(月) 17:40:43.99ID:Rcgjsxsv ほんと、答え書けないのにそう言うこと書くとか、何かの病気なんだろうね
可哀想に
可哀想に
2020/01/13(月) 18:11:33.42ID:auL79zSW
初心者に不正解扱いされて笑った
つまりレベル下げて書くとこういうことだろ?
transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);
if(transform.rotation == Quaternion.Euler(0, 90, 0)) // 処理
>>18の Lerp を RotateTowards に置き換えればそのまま動くんだよ
それをターゲットがあるとか無いとか初心者ならともかくドヤ顔でレスしてるID:Rcgjsxsvが言い出すのは素人感出し過ぎだぜ
まあ初心者が答えるスレっぽくて俺は嫌いじゃないが
つまりレベル下げて書くとこういうことだろ?
transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);
if(transform.rotation == Quaternion.Euler(0, 90, 0)) // 処理
>>18の Lerp を RotateTowards に置き換えればそのまま動くんだよ
それをターゲットがあるとか無いとか初心者ならともかくドヤ顔でレスしてるID:Rcgjsxsvが言い出すのは素人感出し過ぎだぜ
まあ初心者が答えるスレっぽくて俺は嫌いじゃないが
2020/01/13(月) 18:42:06.51ID:QiViT9Gr
38名前は開発中のものです。
2020/01/13(月) 18:50:34.00ID:Rcgjsxsv ドヤ顔でレスかぁ
前スレからの糖衣構文君思い出したわ
前スレからの糖衣構文君思い出したわ
2020/01/13(月) 18:59:30.16ID:QiViT9Gr
40名前は開発中のものです。
2020/01/13(月) 19:46:20.54ID:eGNaRuP0 >>38
ああお前勘違いLINQ理解君?
ああお前勘違いLINQ理解君?
2020/01/13(月) 20:01:23.35ID:6zyx93de
Lerp勘違い理解君か
初心者スレが魔境過ぎて中級者の俺には付いてけない
初心者スレが魔境過ぎて中級者の俺には付いてけない
2020/01/13(月) 20:15:44.52ID:QiViT9Gr
質問スレなんで、質問に対する解決策の提案が出来なければ、誰にも感謝されないよ。
仮に、提案が間違っていても問題ない。一緒に考えてくれることがとてもありがたい。
教えてくれて本当にありがとう。
仮に、提案が間違っていても問題ない。一緒に考えてくれることがとてもありがたい。
教えてくれて本当にありがとう。
2020/01/13(月) 21:07:35.13ID:auL79zSW
物知り顔でドヤってる>>21があまりにも愚かだったから突っ込んだだけで感謝とかそういうのは別に求めてない
……というかてめえには一言足りとも語りかけちゃいないのになんでお前がいちいち答えるんだよ、構ってちゃんかよ
……というかてめえには一言足りとも語りかけちゃいないのになんでお前がいちいち答えるんだよ、構ってちゃんかよ
44名前は開発中のものです。
2020/01/13(月) 21:09:46.43ID:Rcgjsxsv45名前は開発中のものです。
2020/01/13(月) 21:11:21.23ID:Rcgjsxsv2020/01/13(月) 21:32:16.53ID:QiViT9Gr
質問いいかな?
マリオ64+初代トゥームレイダーみたいな3Dアクション作ってるんだけど、
スマホ画面のバーチャルボタンでの二つボタン同時押しがきつい。
例えば、Bダッシュジャンプ(※B押しながらAでジャンプ)とかが出来ない。
そこで物理コントローラでの操作はそのままで、例えばスマホ画面の
バーチャルコントローラだけ、Bボタンを "離す入力" を遅延させることは出来ないかな?
例えばスマホではBボタンを離しても、0.5秒は押したままで判定されて、その隙にAボタンを押すみたいな。
スクリプト内では以下でコントローラの入力を取ってる。
UnityEngine.InputSystem.Controls.ButtonControl
自分が思いつくのは拡張メソッドとか?
スマホ判定したら、特定のボタンの wasReleasedThisFrame が来たら、何とかして遅延実行させるとか?
マリオ64+初代トゥームレイダーみたいな3Dアクション作ってるんだけど、
スマホ画面のバーチャルボタンでの二つボタン同時押しがきつい。
例えば、Bダッシュジャンプ(※B押しながらAでジャンプ)とかが出来ない。
そこで物理コントローラでの操作はそのままで、例えばスマホ画面の
バーチャルコントローラだけ、Bボタンを "離す入力" を遅延させることは出来ないかな?
例えばスマホではBボタンを離しても、0.5秒は押したままで判定されて、その隙にAボタンを押すみたいな。
スクリプト内では以下でコントローラの入力を取ってる。
UnityEngine.InputSystem.Controls.ButtonControl
自分が思いつくのは拡張メソッドとか?
スマホ判定したら、特定のボタンの wasReleasedThisFrame が来たら、何とかして遅延実行させるとか?
47名前は開発中のものです。
2020/01/13(月) 21:46:07.74ID:Rcgjsxsv2020/01/13(月) 22:06:33.65ID:QiViT9Gr
>>47
いえいえ、いつもありがとう。
スクリプトでは例えば以下のように書いてるけど(※例えばYボタン)
if (yButton.wasReleasedThisFrame) {
// 処理
}
物理コントローラー接続時とスクリプトを変えたくないとしたら、
yButton.wasReleasedThisFrame の前に処理をインターセプト出来て、
本来の wasReleasedThisFrame が来たら 10フレ遅らせて wasReleasedThisFrame を発火させるとか。
なら、UnityEngine.InputSystem.Controls.ButtonControl を継承した自作クラスを作るとか?
そんな入力イベントをバッファ出来る自作ボタンコントロールクラスとか出来るのかな?
いえいえ、いつもありがとう。
スクリプトでは例えば以下のように書いてるけど(※例えばYボタン)
if (yButton.wasReleasedThisFrame) {
// 処理
}
物理コントローラー接続時とスクリプトを変えたくないとしたら、
yButton.wasReleasedThisFrame の前に処理をインターセプト出来て、
本来の wasReleasedThisFrame が来たら 10フレ遅らせて wasReleasedThisFrame を発火させるとか。
なら、UnityEngine.InputSystem.Controls.ButtonControl を継承した自作クラスを作るとか?
そんな入力イベントをバッファ出来る自作ボタンコントロールクラスとか出来るのかな?
2020/01/13(月) 22:39:53.81ID:QiViT9Gr
とりあえず進捗
以下のようなクラスの継承では動かなかった。
public class BufferButtonControl : ButtonControl {
// 処理を書く予定だった
}
無理やりキャストして ButtonControl 型の変数に突っ込もうとしたが、Unity で実行時エラーが出た。
yButton = (BufferButtonControl ) Gamepad.current.yButton;
しかし拡張メソッドは動いた。
public static bool WasReleasedThisFrame(this ButtonControl self) {
Debug.Log("Hack!");
return self.wasReleasedThisFrame;
}
あとはこの中にスマホで物理コントローラ接続無しなら、10フレ程度バッファする処理を書けば…
って、どう書くんだろう?
以下のようなクラスの継承では動かなかった。
public class BufferButtonControl : ButtonControl {
// 処理を書く予定だった
}
無理やりキャストして ButtonControl 型の変数に突っ込もうとしたが、Unity で実行時エラーが出た。
yButton = (BufferButtonControl ) Gamepad.current.yButton;
しかし拡張メソッドは動いた。
public static bool WasReleasedThisFrame(this ButtonControl self) {
Debug.Log("Hack!");
return self.wasReleasedThisFrame;
}
あとはこの中にスマホで物理コントローラ接続無しなら、10フレ程度バッファする処理を書けば…
って、どう書くんだろう?
2020/01/13(月) 22:40:12.07ID:yBWGUThF
そんな処理より、操作変えた方がいいよ。
ボタン二つを管理するのかな?と思ったけどそうじゃなくて遅延させるのはちょっと…
どうしてもやりたいなら、タッチマネージャーを頭から作るのが必要かと。
ボタン二つを管理するのかな?と思ったけどそうじゃなくて遅延させるのはちょっと…
どうしてもやりたいなら、タッチマネージャーを頭から作るのが必要かと。
2020/01/13(月) 22:42:52.88ID:6zyx93de
ここまでの内容をまとめると
怒涛の連レスするID:RcgjsxsvはID:QiViT9Grと同一人物で
前スレで何か悔しいことがあってたまらないから自分で質問して自分で解答して
感謝されてる素晴らしい僕を見せつけたいとそんな感じか
どれだけ承認欲求拗らせるとこうなるんだろう
怒涛の連レスするID:RcgjsxsvはID:QiViT9Grと同一人物で
前スレで何か悔しいことがあってたまらないから自分で質問して自分で解答して
感謝されてる素晴らしい僕を見せつけたいとそんな感じか
どれだけ承認欲求拗らせるとこうなるんだろう
2020/01/13(月) 23:13:16.61ID:QiViT9Gr
>>50
アドバイスありがとう。
タッチマネージャーを自作が良さげでいいのかな。
うーん、もともと ”このゲームは必ず物理コントローラを接続して下さいキリッ!” っていこうとしてたけど、
流石にそんな物理コントローラ用意するコアな人達は1%もいないと思い、スマホ画面上にボタン表示して自分で
動作テストしたけど、当然とても操作が難しかった。
でも、自分的にはスマホ的なタッチ操作はまだ考えてなくて、あくまでスーパーファミコン的な操作でやりたいと思ってる。
で、ボタンを離す動作の遅延処理を思いついたという流れ。
上に書いたように拡張メソッド自体は動くので、何とかバッファ処理出来ないかなと…
スマホ画面でBダッシュジャンプを実装したいなあ…
アドバイスありがとう。
タッチマネージャーを自作が良さげでいいのかな。
うーん、もともと ”このゲームは必ず物理コントローラを接続して下さいキリッ!” っていこうとしてたけど、
流石にそんな物理コントローラ用意するコアな人達は1%もいないと思い、スマホ画面上にボタン表示して自分で
動作テストしたけど、当然とても操作が難しかった。
でも、自分的にはスマホ的なタッチ操作はまだ考えてなくて、あくまでスーパーファミコン的な操作でやりたいと思ってる。
で、ボタンを離す動作の遅延処理を思いついたという流れ。
上に書いたように拡張メソッド自体は動くので、何とかバッファ処理出来ないかなと…
スマホ画面でBダッシュジャンプを実装したいなあ…
2020/01/13(月) 23:43:09.48ID:yBWGUThF
指がaボタンの位置にきたらジャンプでいいのでは?
@b押しっぱなしからスライドa領域
Aa領域タッチ
@b押しっぱなしからスライドa領域
Aa領域タッチ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【ネトウヨ終了】大人気ユーチューバー「高市早苗のことをまともだと思うやつは私のコンテンツにさわらないでください」 [339712612]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 外務局長「中国さんごめんなさぁ...」小野田「中国なんかどうでもいいっ!」高市「首脳会談したい」マスコミ「立憲が悪いっ!!」 [237216734]
