Unityで何かゲームを作りたいんだがね [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ちなみに現状は最終クリックから0.3秒の間隔で確認しているので
その前に判定したいとか? >>207
すいませんなんか変な勘違いをしてました
いろいろ試したところ、switch構文でダブルとトリプルの判定ができました!
ただ、ダブルタップ後、トリプルタップをするまでのほんの少しの間に
ダブルの方の動作が起きかけて、トリプルタップでトリプルの動作になるといった感じです。
ちなみにこのTapTimeを使う場合、これにどう加えればトリプル判定ができるのでしょうか
両方マスターしておきたいので教えてください。
void Update () {
// double tap
if (isDoubleTapStart){
doubleTapTime += Time.deltaTime;
if (doubleTapTime < 0.2f) {
if (Input.GetMouseButtonDown (0)) {
isDoubleTapStart = false;
ChangeSize (true);
doubleTapTime = 0.0f;
}
} else {
ChangeSize (false);
// reset
isDoubleTapStart = false;
doubleTapTime = 0.0f;
}
} else {
if (Input.GetMouseButtonDown (0)) {
isDoubleTapStart = true;
}
}
} >ただ、ダブルタップ後、トリプルタップをするまでのほんの少しの間に
ん?Switch文の関数に行った時には確定なのでこのような動きはないはずだけど
ちょっとそこの部分見せて見てください >>209
こんな感じです
void TouchCheck(){
if (Input.GetMouseButtonDown(0))
{
CancelInvoke();
Invoke("CheckCount", 0.3f);
clickCount += 1;
}
switch (clickCount)
{
case 1:
Debug.Log("処理1");
break;
case 2:
2タップの処理;
break;
case 3:
3タップの処理;
break;
default:
Debug.Log("Default");
break;}}} void CheckCount()
{
print(clickCount);
clickCount = 0;
}
ここでプリントしてるからここにSwith文を入れるよ
こんな感じ
void CheckCount()
{
print(clickCount);
switch (clickCount)
{
case 1: print("1Click処理"); break;
case 2: print("2Click処理"); break;
case 3: print("3Click処理"); break;
}
clickCount = 0;
} もし、ChangeSize (true);この処理が遅くて次のクリックを拾ってしまうという感じだったら
この処理中はクリックさせないとか制御するといいかと思います >>212
ありがとうございます
switch、TapTime両方ともできました
これでいろいろ応用できそうです それはよかった
また何か困った事かあれば気軽に書き込みしてね >>215
さっそく困ったことが起きてしまいました。
シーン1で2タップ3タップを行ってて、
シーン2に行った後にシーン1に戻ると、
なぜか2タップ3タップができなくなってしまいます。
シーン1では複数のカメラを使ってる関係で
シーンの移動には普通のCanvasのボタンではなく、
オブジェクトにEventTriggerとColliderをつけたものを使ってます。
これを押したときのタップが2タップ3タップ判定に影響してるのでしょうか
switch文でもTapTimeでも同じでした。
いい方法があったら教えてください。 デバッグすればいいんでないの
いつもならこの変数の値がこうなっていてif文を通過するけど
おかしくなってるときはこのif文が通過しないとか調べられないのかなあ
調べられないのなら仕方ないけど
頑張ってね シーンを移動すると読み込まれて新たにオブジェクト等が生成されて動くのよ
しかしシーン移動には追加移動があってそれだと既にある所に追加される
どういう、移動を行ってるかのコードが分からないので的確には答えられないよ
コード載せるか、一番いいのはパッケージにして白猫とかに上げてくれれば確認出来ます
何にせよコード見ないと何とも言えません 通常は
ゲーム開始→シーン1→シーン2
この場合はちゃんとタップできる
シーン2→シーン1
これでタップ出来ない
であるならば、シーン2からの遷移がおかしいと推測出来るけど、具体的2どえなってるかこちらでは見えないからアドバイス出来ないよ 初心者によくあるシーンを移動して戻ってきたら直前の状態が維持されると思い込んでるパターンじゃないのか
シンプルな実装ならシーンは読み込むたびにリセットされるぞ ありがとうございます。
色々調べたのですがまだダメです。
シーン2→シーン1に移るときには
SceneManager.LoadScene("シーン1");
を使ってるので、シーン2は破棄されているはずなのですが、
シーン2から再生スタートして
シーン2→シーン1移動後は、
他にもInvokeを使ってるスクリプトが正しく動かなくなってるので、
Invoke関連の情報はLoadSceneしても残ったままなんてことがあるのでしょうか シーン1でもシーン2でもInvokeを使った処理をしてます
2タップ3タップのスクリプトは
Invokeを使ってないTime.deltaTimeの方でもダメなので
Invokeだけの問題ではなく、時間処理関連がおかしくなるみたいです。 横から失礼。
タップ部はクリアできたのでしょうか?
まずは遷移をタップではなく、ボタンを3つ用意して、遷移がキチンと成り立つか確認するといいと思います。
おっしゃってるように、ivokeなど裏で動くものはシーン消滅の時どう動くのか熟知していないと話になりません。 >>224
>タップ部はクリアできたのでしょうか?
214に出来たって書いてるよ、読んでないのかな
横からくるなら読み返してから書こうね
あとコードも載せてるから自身で検証してから色々と意見言おう
そうじゃないとほんとに 失礼 な話だよ
レスも熟知してないなんて、話になりません。 気になるのは
>複数のカメラを使ってる関係
EventTriggerでクリックするという事は、カメラにRaicaster付けてると思うけど
それが無効になってる可能性もあるのかな
まずは、カメラ一つでやってみるといいかな すまんね、君のコードが見えない為に、色々と予想でしか書けないのだよ
だから解決までに時間がかかってしまうのだ
本当に解決したいなら、コードをアップしてくれれば一発解決なんだよね >>226
本当に完了しているか確認しただけなのだがね。
その上でデバッグをと思ったが、まあどうぞ。割り込まれたくないならそういってくれ。 あのね
初心者スレからわざわざこっちに誘導したのよ
こういう七紙がうざいからね
今まで全く出てこなかったのにレスが増えるとこういう七紙が湧いてくるんだよなぁ
ほんと七紙ってうざっ 人に教えようという気概があるのに、いきなり失礼だとかうざとか使いなさんな、人格疑われたらもったいないぞ。 別に選挙に出るわけでもないし人格などどうでもいいんだけど、もともとは
横から失礼といいつつ、締めで「話しになりません」とかの上から目線の方が人格的にどうなのかと思うけどね
ましてや自分でコード上げない検証しないってんなら尚更でしょ
それに何故かこの使われてなかったスレなのにそこに湧いてくるってなのもね
まぁホント七紙っていうのは不思議な生き物だわ 君が他のスレで叩かれたのは見てきてるよ。
それでもめげずに初心者指南してるのは立派だが、だからといって見ていないと決め付けるはいかがなものか、いや、あれしきでそこまで荒んでるのかい?
それに本人がivokeやtimeでスパゲティになってるようだから、熟知してないところをはっきりさせる事が失礼なのかい?
なんで人格から選挙の話になるんだw
ちょっとアレ入ってるのか? アレって何かな?
しっかしオレのファン多いなwww
質問に関係ないの好きだね
コードの話なら歓迎なんだが
まぁ名無しだからしょーがないかw ついでに言うと
>熟知してないところをはっきりさせる事が失礼なのかい?
んで
>ivokeなど裏で動くものはシーン消滅の時どう動くのか熟知していないと話になりません。
んじゃ熟知しているあなたに、ivoke、おそらくinvokeだと思うけど
消滅の時、どう動くのか書いてあげればいいんじゃないの?
なんで、話になりません って突き放したような言い方なのかねぇ
優位に立ちたいだけでしょw
で、どういう風に動くの?熟知って事は、メモリーがどうなってOSから削除されてとか知っているの?
で、それ知ってアプリケーション作成にどう関係あるの?
説明を是非お願いします
なんせ、初心者相手なのですから、まったくわからないのですよ
熟知しなくても私は作れると思っているけどね
是非熟知した内容をここで披露してみてください
それで初心者が作れるようになるならいい事です もう顔出さないとか言ってたあの時の話はだいぶ滅入ってたんだね。
ここには俺1人しかきてないから大丈夫だよ。人格攻撃や暴言とかしないから。
ivokeの件は、おっしゃるように誤字するぐらい知らないからに決まってます。だから自分に向けても含めて、話にならないと言ったのですよ。これはわかりにくくてすまんかったね。
裏で動く処理はデバッグではわかりにくくする要因の一つだから、本人も怪しんでるから切り離してやるべきだよ。
本人は動くものを望んで入ると思うが、コードを渡してハイ終わりはまた次の相談が出るからね。
問題の解決方法を教えてあげるのが一番いいと思うが…これは人によるから、ソースアップされたらスルーしてるよ、現に何も言ってなかったでしょ?w 昔ベーマガという雑誌があってだ
そこには必ずやゲームのソースがのってたのだよ
で何も知識もないその頃の読者たちは必死でそれをパソコンに打ち込んで実行するのだよ
そういう動くコードを、さらに改造して知識を深めて行って最終的に自分で1から作れるようになるのさ >>237
> 問題の解決方法を教えてあげるのが一番いいと思うが…
完全に僕とはスタンスが違うので、それやりたいなら自分でスレ建てればいいよ
わざわざ人が質問スレから誘導してきたのにでしゃばってまでやりたいというのがわからんが
あ、このスレあなたが作ったんであれば、私が出ていくから後はしっかり最後まで面倒見てね
どうします? >>225
ありがとうございます。
このパッケージで試したら移動後も問題なくタップ検知しました。
ということは
自分のシーン2の方のスクリプトに問題があるということですが、
LoadSceneで他のシーンをロードしても影響が残るってことは
シーン2で使ってるタップ関係以外の
Time.timeなどの計算が続いてるってことですよね。
Invokeやtimeなどの時間計算をきちんと終了させるために
必要なコードが抜けてるのでしょうか
それともシーンをDestroyすると完全に消えるとかあるんですかね >>239
ベーマガなんて懐かしいものをw
そんなの出さなくたって通じてるよ、君も書いてるでしょ、よく読まずに諭すなんて 失礼 な話だってw
それに、ほら弟子、あ弟子の弟子になるのかな?ソースが動いたってレスくれてるじゃないか、完了したみたいだけど。さすがにそこからは踏み込めないよw >>240
うーん、全体が見えないので何とも
objectにクリック設定しているって事なのでカメラからのRaycaster関係かなって気がするけど
原因究明には、最小限のコードにしてみる事です
あとは、今回のちゃんと動いてるパッケージにそちらの欲しい機能を追加していく感じかなぁ
なんにせよ全体が見えないからねぇ >それともシーンをDestroyすると完全に消えるとかあるんですかね
んーと、シーンのDestroy?
ちなみにUnloadする場合、非同期なのでシーンのUnloadをまって処理するとかの場合には
製作途中で得たUnityのミニ知識を披露するスレの44あたりにやり方書いてあるので、参考にしてみて
https://mevius.5ch.net/test/read.cgi/gamedev/1511784235/44 >>243
検証した結果、シーン2で使ってるスクリプトの中の
「Time.timeScale = 0;」と「Time.timeScale = 0;」を取り除くと
シーン1に行った後のタップの不具合が起きなくなりました。
調べると個別にOnPause()メソッド等で処理すればいいみたいですが、
Time.timeScale = を残したままシーン2から移動するときに
この影響がなくなるような方法はないでしょうか >>244は
「Time.timeScale = 0;」と「Time.timeScale = 1;」
の間違いです。 単純に考えると、シーン2で変更してるなら、シーン1に行く前に戻せばいいような気がします
ちょっと検討つかずで検証コード書けないからまた、明日にでも考えるけど
なにか参考になる、コードある?
(今は酔ってるのでこのあとは寝る) Time.timeScale = 0の時に中断したりデストローイして
0になりっぱなしになってんじゃね? 色々勉強になるなあ
初心者の俺には知らないことや難しいことばかり
>>244
それはタイムスケールを0に変えたままダブルクリック等は普通に動作させたいのか?
タイムスケールが0だと時間が進まないから時間経過でシングルダブルトリプルを区別することが出来ないと推測
ググったら
タイムスケールに影響されないのがあった
これでタイムスケール0でも時間経過でシングルダブルトリプルの区別ができそう(推測)
古いバージョンにはなかった的なことも書いてあった
注意としてアクティブではないときも時間経過するという違いがある くまじょさん、せっかく色々と書いてくれるのはありがたいけど
相手は初心者なので、推測じゃなくて、自身で検証してくれるといいかと
その上で書いてもらえるとみんな幸せになれると思う
じゃなきゃ混乱の元に 検証してみた
public void BtScale0()
{
Time.timeScale = 0;
}
private void Update()
{
print("delta:" + Time.deltaTime);
}
こんなコードでScale0の時にdeltaTimeがどうなるか
https://i.gyazo.com/e3b583c20471898c8a1ec2352462c117.png
結果、0だった
だから、+= Time.deltaTime こういうコードは使えなくなるね
Time.frameCount は常に動くので、deltaTimeのところはこちらを使うように変更すればいいかと思う
OnPauseとか書いてたからポーズ処理だと思うけど
他にいい手があるかも知れないので
明日また検討してみる >>248>>251
いろいろ試したところ、
シーン2で使ってる「Time.timeScale = 0;」をそのままにして
シーン2からシーン1に移動するときに
一緒に「Time.timeScale = 1;」をしたところ、
シーン1で不具合が起きませんでした。
「Time.timeScale = 0;」はシーンをまたいで
プロジェクト全体に影響するようなので、
0のままにしておくというのがよくないみたいですね。 0だとゲーム内の時間とFlexUpdateが完全に止まるから、
物理やtweenや時間を使ったエフェクトが一切利かなくなるはず >>252
単純なのはシーン1のstartにtimescale=1をかいておくとシーンが増えて戻し忘れがなくなるかな
とりあえず解決っぽいので良かったです 10日からわんういーく
今度はランキング入れたいな さてどんなお題かなぁ
前回は密、時事的にいくと自粛とかgotoとかか?
作りにくいぞ ヤバい、1week の、続々作ってるよねーつぃったー勢すごいわ
弟子はやっとアイディアが固まりつつ
と言ってもショボいんだわな ■ このスレッドは過去ログ倉庫に格納されています