[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
711: 694 2020/02/28(金)11:53 ID:iaQ+QUKs(1) AAS
>>694
から少しだけ進展があったので報告、および質問

外部リンク:qiita.com
こちらのサイトを参考に、パーツのメッシュ(SkinnedMeshRenderer)の各プロパティ(たぶんウェイトやボーン)を、
ベースのボーンのものに書き換えました
古い生地なのでオブジェクトをDestroyできなかったり、取得できないプロパティを参照していたりと
ソースをそのまま使うことはできませんでしたが、とりあえずコンパイルを通して動かしました
省9
712
(1): 2020/02/28(金)12:52 ID:ALzUb0si(1/3) AAS
2019で5.6の講座を見ながらやっています

delegateSample.csに
public class A{
public int a;
}
public delegate void delegateSample(A aInstance);

public class delegateSample : MonoBehavior{
省5
713: 2020/02/28(金)12:55 ID:ALzUb0si(2/3) AAS
delegateSample.csに内にある
(コード)
をからのオブジェクトにアタッチ
です
714: 弟子 2020/02/28(金)13:27 ID:3Lsu3jjC(2/2) AAS
>>712
定義の仕方かなぁ
画像リンク[png]:i.gyazo.com
とりまどっかから拾ったコードをUnityぽくしてみた
715: 2020/02/28(金)14:02 ID:ALzUb0si(3/3) AAS
なるほど
ありがとう
それだ通るんですね
ただ動画の人も通っているので
まあそれはほかにも見えないファイルがあるんですが
まあもう少し勉強してみます
716: 2020/02/28(金)14:48 ID:/AKvkhm4(1/2) AAS
輪投げのイメージで画面を下から上にフリックすると用意してあったプレハブが生成されてフリックした方向と速度で発射されるというのを作るのは難しいですか?

輪のオブジェクトを画面に出してスタートすると自然落下するという所まで来ましたが、何をしたら飛ぶのかわかりません

何を調べれば良いかもわからないので使いそうな命令?だけでも教えて頂けると助かります
よろしくおねがいします
717
(1): 2020/02/28(金)14:51 ID:sAVdF7st(1) AAS
touchした座標とそこからドラックした距離、時間を使って力の値を導き出します。
その値を、輪にadd forceなどで移動させます。
718
(1): 2020/02/28(金)14:55 ID:60vQiGEi(1) AAS
タップしたらそこに輪が置かれるとか、タップすると輪が真上に飛んでいくとか、
そういうとこからちょっとづつ要素増やしたり変えていったりすればいいのでは
いきなり作るのは大変だよ
719: 2020/02/28(金)19:30 ID:/AKvkhm4(2/2) AAS
>>717,718
ありがとうございます
取り敢えずフリックは置いておいて、奥に投げるという動作を実装するために

startにaddforceを書いたスクリプトをセットして、生成された瞬間奥に飛ぶプレハブが出来ました
それをタップした位置に生成したのですが、どこをタップしても真ん中に向かって飛んでしまいます

プレハブをスクリプトからinstantiateしないで最初からゲーム画面に置いた時は真っ直ぐ奥に飛びます

外部リンク:yumineko.com
省5
720
(1): 2020/02/28(金)20:11 ID:Medy2iIU(1) AAS
そう言う場合は、極端な数字を入れるがよろし。
出てきたposのxに10、100、1000を、変わらなければ順に掛けてから生成。
721
(1): 2020/02/28(金)20:39 ID:0RwkjVUc(1) AAS
生成位置と射出方向は分けて考えよ?
ScreenPointToRay使ったら?
722
(1): 2020/02/29(土)14:33 ID:1kV/1GjB(1/2) AAS
>>720,721
ありがとうございます
xに10を掛けたら意図した挙動になりました!

現在controllerというオブジェクトに貼り付けたスクリプトでタッチを取得→public float xにpos.xを代入後プレハブを生成

プレハブのスタートでcontrollerオブジェクトをfindし、スクリプトをゲットコンポーネントしたのちにaddforceのxにcontroller.xを指定して射出方向をコントロールしています

findを多様するのは良くないと見かけたのですが、プレハブにゲームオブジェクトをアタッチする事は出来ませんよね?

今後このシステムを輪投げではなく弾を発射などの連射する様なゲームに流用しても大丈夫なのでしょうか?
省1
723
(1): 2020/02/29(土)14:48 ID:J+xpv0tu(1) AAS
>>722
スクリプトにアタッチ指定すればいいかと。
やったことないけど、ずっとやろうやろうと思って今w

また、findはゲームフローのLOOPで負荷にならない場所でやればいいと思ってます。プロじゃないので。
724: 2020/02/29(土)15:17 ID:1kV/1GjB(2/2) AAS
>>723
なるほど、スクリプトにアタッチ指定というのはやり方がわかりませんが方法はあるんですね

今の所どれだけ連打しても負荷は感じませんが実機でテストプレイするしかないですね
まだ初心者なので弊害があるまでは動けば良いというスタンスでやってみます!
725: 2020/02/29(土)15:24 ID:b8huESie(1/2) AAS
UbuntuでUnityでゲームを作ることはできますか?
726
(1): 2020/02/29(土)15:43 ID:NqqYgWAQ(1) AAS
日本語でおk
727
(1): 弟子 2020/02/29(土)17:02 ID:wBtxqkZH(1) AAS
検索結果
ウェブ検索結果
UbuntuでゲームエンジンのUnityをインストールする手順
外部リンク:www.virment.com
728: 2020/02/29(土)22:05 ID:b8huESie(2/2) AAS
>>726
すまん、語彙力ないしコミュ障なんや
>>727
サンガツ
729
(1): 2020/03/01(日)13:02 ID:W5NbcG3C(1/2) AAS
unity2018.4.17f1です。
3Dキャラを表示するにはdirectional lightしかないのでしょうか?
部屋や特定の範囲ごとに明るさを変えたい場合は
どうやってキャラクターを照らせば良いのですか?
(directional lightがないとキャラが真っ黒になるので・・)
730
(2): 弟子 2020/03/01(日)13:13 ID:bg2PdJXV(1) AAS
Unityライトを使った演出の作り方
外部リンク:styly.cc
731: 2020/03/01(日)13:35 ID:W5NbcG3C(2/2) AAS
>>729 です。
回答ありがとうございます!
732
(1): 2020/03/02(月)22:12 ID:FZAofo0u(1/2) AAS
助けてください…!!!!
Unity 2018.4.16f1で個人練習用にフリー版NGUI「ngui270.unitypackage」を
インストールしたのですが、UITextureコンポーネントなど、NGUIのコンポーネントが出てきません。
UnityにはNGUIフォルダもできておりシェーダーもあるのですが、どうしたら正常に使えるようになりますでしょうか
733: 2020/03/02(月)22:14 ID:FZAofo0u(2/2) AAS
↑UIStretch.cs
UITextList.cs
UITexture.cs
UITiledSprite.cs
UITooltip.csなどなど、入っていることは確認できております
734: 2020/03/03(火)11:25 ID:DIrug5M2(1) AAS
なんで今更NGUIなんか入れるの
735: 弟子 2020/03/03(火)11:42 ID:Qbw0Io/Y(1) AAS
>>732
ソースの中身が古くて無くなった命令つかってるよってエラー出てるでしょ?
画像リンク[png]:i.gyazo.com

とりあえず
Camera.isOrthoGraphic → uiCamera.orthographic
Renderer ren = go.renderer → Renderer ren = go.GetComponent<Renderer>()
Collider col = gameObject.GetComponent<Collider>(); //collider;
省2
736
(1): 2020/03/03(火)17:16 ID:hGrdnLAs(1) AAS
Ubuntuの方のUnityは名前紛らわしいから遂に名称変えるらしいな
737: 2020/03/03(火)17:29 ID:wp3iypza(1) AAS
Ubunty
738: 2020/03/03(火)18:41 ID:09uaPptx(1) AAS
Utility フォルダと間違えそうになることはあるw
739: 2020/03/03(火)19:42 ID:VHMxnF1X(1) AAS
>>736
まあ、Unityという微妙に一般な単語を使ったほうが悪いような気もする
740
(1): 2020/03/03(火)22:23 ID:ApYXiw1K(1) AAS
Unity2019.3.3f1です。
アセットストアではなくユニティちゃん公式サイトのSDユニティちゃんを使って
クリックしたキューブの上に仰向けorうつ伏せで一定の高さから落下させて
ボードゲームのコマとして使いたいのですが
どういうスクリプトを書けばいいですか・・?
落下というより重力に関係なく空中からキューブの上まで
移動させる処理でも良いのですが。
741
(1): 2020/03/04(水)01:03 ID:M9QGHLDI(1) AAS
ここは通信学習の場ではありません。
まず自分でできるところまで組んでください。
そして、思うように動かないところを、自分がどう組んだか説明し、どうしたいのか、現在はどう動いてしまうのかを説明してください。
話はそれからになります。
742: 弟子 2020/03/04(水)06:30 ID:BZLTYd6o(1) AAS
>>740
とりまユニティちゃん公式の「SD_UnityChan-1.unitypackage」を2019.3.0f6にてインポートしたところ
エラーが出たので、そこはまず修正します
using System.Security.Policy; ← これをコメントにします

んでもってユニティちゃんを配置してcubuを配置してみましょうか
落ちるのでRigidBodyを配置します
ぶつかりにはぶつかる方と自分にコライダーを設置
省6
743
(1): 弟子 2020/03/05(木)14:14 ID:u6b+D0lk(1/3) AAS
>>741
>ここは通信学習の場ではありません。

その通り、ここはあなたの主張をする場ではありません
答がわからないなら書かないように
ちゃんと>1を読み理解しましょう
744: 2020/03/05(木)14:57 ID:2PrydH1X(1) AAS
関東無政府主義国へようこそ!
外部リンク[aspx]:x0000.net
745
(2): 2020/03/05(木)18:01 ID:w+mRocnN(1) AAS
>>743
その通り、ここはあなたが自治するところではありません。
スルーできない正確ならちゃんと>1を読み理解しましょう
746: 弟子 2020/03/05(木)18:29 ID:u6b+D0lk(2/3) AAS
>>745
ごめん、スルー出来ない性格なんだよ

ちゃんと正確に書こうねwwww

添削終わり
747
(1): 2020/03/05(木)21:17 ID:cTpBbpSo(1) AAS
UNITYのクラスの概念がよくわからないのでご教授くださいm(__)m

UNITYでよく使われている他オブジェクトのクラスの取得で、

GameObject 変数;
クラス名 変数 = GetCompornent<クラス名>();

みたいなのがありますが、
これはC#の教本とかによく載っている、「プレイヤークラスを作ってインスタンスを作成する」
みたいにインスタンスを作っているという解釈でいいんでしょうか?
748
(1): 弟子 2020/03/05(木)21:38 ID:u6b+D0lk(3/3) AAS
GetCompornent はあくまで、その指定した<クラス名>にアクセスする為に参照を作成しているだけです
「インスタンスを作成する」場合には、New指定が必要です

例えば
int original
int a = original
int b = new int();
b=original;
省8
749: 2020/03/06(金)05:14 ID:jDntWvjW(1) AAS
サンプルコードでもセミコロンないとモヤる
750
(1): 2020/03/06(金)10:35 ID:88urs3PV(1) AAS
ゲーム中に「操作の説明」を表示したいと思っています。
例えばキャラクターがドアの前に来たときに、ドアを開けるボタン、
例えばAボタンなら「A」のアイコンを表示するようなものです。

そこで、今現在キーボード操作なのか、ゲームパッド操作なのか、
「ドアを開けるボタン」にどのボタンorキーが紐付けられているのか、
を取得しなくていはいけないのですが、この方法がわかりません。

方法そのものではなく検索キーワード、実現できるアセットなど何でもいいので
省1
751
(1): 2020/03/06(金)11:08 ID:hgj9cGoZ(1) AAS
値型をnewしてる割に偉そう
752
(1): 2020/03/06(金)12:16 ID:gMHoqhp3(1) AAS
>>747
プレイヤーのインスタンスを作るってのはどっちかいうとプレイヤーのプレファブをインスタンス化するの方がイメージ近いと思う。
その時作られたGameObjectにはいろいろcomponent としてのスクリプトが引っ付いてるけどGetComponentはその引っ付いてるものの参照を持ってくる感じ
753
(1): 弟子 2020/03/06(金)12:33 ID:8vF8ZWlw(1) AAS
>>750
「unity キーコンフィグ」「unity ゲームパッド」ここら辺で一応キーボード、マウス、ゲームパッドが分かるかなと

>>751 偉そうじゃなくて偉いのよ、ちゃんとスレの主旨として質問に答えてるからね、雑談したいなら雑談スレへどうぞ
754: 747です 2020/03/06(金)15:43 ID:vJ19FqQh(1) AAS
>>748
>>752
UNITYの本とc#の本で同時に勉強してるので混乱してました
C#本に書いてあるインスタンスの使い道がまだよくわからないですが
とりあえずは単純にプレファブからインスタンス生成って考え方でいこうと思います
ありがとうございます
755
(3): 2020/03/06(金)22:24 ID:1ULsHRya(1/2) AAS
簡単なライトノベルを作りたいと思い、
画面下にテキストウィンドウが出てクリックすると次の文章が出るといったことをやりたいのですが、
スクリプトでやるのは難しいので、テキストウィンドウのイメージ画像を最初に10枚くらいピッタリ重ねておいて
クリックすると上から一枚づつ消えるようにしようと思いました。
ですが間違ってダブルクリックして一気に2枚消えてしまうのを防ぐために一枚消えたら0.5秒くらい操作不能のしたいです。
何秒後に実行Invokeというのは分かったのですが、何秒間操作不能というのは簡単に出来るでしょうか。
756
(1): 2020/03/06(金)22:28 ID:VGelP9bX(1) AAS
>>755
クリックしたら透明パネルをオンに、invokeで0.5秒後にパネルをオフでいいんじゃない
757: 755 2020/03/06(金)22:34 ID:1ULsHRya(2/2) AAS
>>756
なるほど、それなら自分でも出来そうです。
どうも有難うございます!
758: 2020/03/07(土)08:40 ID:5EioThaq(1/2) AAS
自分ならもう少し頑張ってプログラム勉強しながら作るけどな…
そのまま続けたらいつか破綻しそうだけど
759: 2020/03/07(土)08:57 ID:Uss2F5S3(1) AAS
ていうかこれいわゆる「テキストが画像」な状態なのでは
もがく方向性はそれでいいのか…?
760: 2020/03/07(土)09:12 ID:+zNTitoa(1) AAS
自分も初心者だけどパネルのオンオフとかロジックの考え方とか練習として無駄になるわけじゃないのでとりあえず動く物を作るのは良いと思います。
こうした方が良かったなって作り直す時に成長を実感するしいきなり大作作るわけでも無いので。

というよりプログラムの習得ってその繰り返しでは無いでしょうか・・・。
761: 2020/03/07(土)10:27 ID:6+Dk7f8n(1) AAS
>>755
まあ一度やってみればいいと思うけど、テキストを画像にして切り替えはまあ悪手だと思う
762: 2020/03/07(土)13:06 ID:5EioThaq(2/2) AAS
頑張る、回避する方向性が正しいのかを見極めるのもセンスだと思う
763: 2020/03/07(土)13:22 ID:rwQlodPt(1) AAS
本人の意向に沿ったアド。
764: 2020/03/07(土)14:41 ID:WpOmTZAt(1) AAS
フォントのライセンス回避には良い施策かも

再配布できるフォントは限られてるし
765: 2020/03/07(土)20:44 ID:j6C8KDrh(1) AAS
UnityからBlenderファイルを直接読み込むと、アニメーションが読み込まれません。
これを読み込める様にするにはどの様にすればよいでしょうか?
Windowsの場合、こちら(外部リンク:gomafrontier.com)に解決策が載っていますが、Macでのやり方が分らず、困っています。
ご存知の方いらっしゃいましたら、教えて頂けると助かります。
宜しくお願い致します。
766
(1): 2020/03/07(土)22:23 ID:y+xObmvy(1) AAS
Unity2018 Blender2.81を使用しています

Blenderで人型のモデルを作り、アニメーションを付けたFBXファイルをUnityへ取り込みました
アニメーションに追従させるため、武器をもつ方の手のボーンにコライダをつけて攻撃時の当たり判定に利用しようとしたのですが
恐ろしく大きなコライダができてしまいました

手のボーンのオブジェクトをダブルクリックするとモデルが見えなくなるほど画面が一気に引きます
他のボーンでも同じようになります
おそらくUnityに取り込んだボーンのサイズがおかしくなっているのだと思われます
省9
767
(1): 2020/03/08(日)08:17 ID:yu7/7LHp(1/2) AAS
>>766
Unity側でFBXの読み込みスケールを確認した?
基本は100に設定されてる、FBXごとに設定出来るけども
768
(1): 2020/03/08(日)08:49 ID:0zTqE3kf(1) AAS
>>767
Unity側でのFBXの読み込みスケールの確認とはどこでできるのでしょうか?
一応インポートしたFBXファイルのModelタブを確認するとスケールファクターは1になっています
769
(1): タワー ◆j2ZL4YtpzY 2020/03/08(日)11:44 ID:FIQBCa1I(1) AAS
先生方質問でふ!
2Dで画像にcollider付けてボタンとして使ってるんですがたまにタップしても効かない時があります
常に効かない訳ではなく、同様の場面で効く時、効かない時があります

Unity上で一時停止してcolliderを一旦オフにしてからオンに切り替える事で作動したのでスクリプト上で切り替えを行う様にしましたが改善出来ませんでした

同じく一時停止してtransformのxyを体感出来ない値で修正したら作動したのでスクリプト上で…同じく改善出来ませんでした

経験のある方…何かピンと来た方居られませんでしょうか?
770
(1): 2020/03/08(日)13:19 ID:yu7/7LHp(2/2) AAS
>>768
そこで良いけど
基本的にUnity側はデフォルトのままで出力側でスケール管理する方が楽だと
ちなみにエディターをスクリプトで拡張したらインポートの大きさやらを色々と自動化できる

Blenderの事は詳しく無いけど、テストで骨適当に入れたモデルをFBXで書き出して試したら?
それがまともなら書き出しや読み込み設定は正しくて、キャラの骨側が問題だって明確になるよ

キャラクターみたいに複雑な物をいきなりやる前にテストパターンで最低限を理解してからじゃなきゃ地獄見るよ
省1
771
(1): 弟子 2020/03/08(日)15:49 ID:u0wg0OZ9(1/5) AAS
>>769
canvas使ってるならソートオーダー関連か、複数なら順番かなと

使ってないとなると、何か透明なのが上にのってるとか?
772
(1): 弟子 2020/03/08(日)15:54 ID:u0wg0OZ9(2/5) AAS
ちょいググったら、コライダーによるイベントシステムのタップ(クリック)は重なってるととれないとか?あるっ歩い
レイ飛ばしてるサンプルあったけどそんな感じかなあ
773
(1): 2020/03/08(日)16:38 ID:+9Yp1l0D(1/4) AAS
Instantiateでプレハブから複数生成したオブジェクトを
ランダムに一つずつ選んで破壊するのはどうすればいいんでしょうか?
774: 2020/03/08(日)16:56 ID:xMgGiSpz(1) AAS
ランダムに選択して、デストロイすればいいよ。
775
(1): 弟子 2020/03/08(日)17:04 ID:u0wg0OZ9(3/5) AAS
>>773
instantiate はgame object を返してくれるのですよ
なので返しを配列に入れれば、配列からランダムに取り出して操作が出来るのよ
776
(1): 2020/03/08(日)17:40 ID:+9Yp1l0D(2/4) AAS
>>775
いろいろ試してはいるのですがなんかエラー出ますm(__)m
そもそも生成自体ちゃんとできてないみたいです
どのように記述すればいいのでしょうか・・・?

public class sousa : MonoBehaviour
{
public GameObject obj; // インスペクターでプレハブ接続済み
省19
777: 弟子 2020/03/08(日)17:43 ID:u0wg0OZ9(4/5) AAS
>>776
エラーメッセージは?
778: 2020/03/08(日)17:52 ID:+9Yp1l0D(3/4) AAS
indexoutofrangeexception index was outside the bounds of the array

と出ます。
配列の要素数が間違ってるんでしょうか・・・
クリックするたびに同じエラーメッセージ出ます
779: 弟子 2020/03/08(日)18:04 ID:tckEnlBQ(1) AAS
それはですねー
public GameObject[] go = new GameObject[5];

ここで5個の配列を準備しています
で、5個ということは、0からだと4までになります
0,1,2,3,4で5個

でfor文
for (int i = 0; i <= 5; i++)  これは0から5まで
省1
780: 弟子 2020/03/08(日)18:06 ID:u0wg0OZ9(5/5) AAS
配列の分だけ回す場合には、最大値には配列.lengthが使えると思いますよ
781: 2020/03/08(日)19:06 ID:+9Yp1l0D(4/4) AAS
なるほどforで0から6までまわしていたということですか・・
forの使い方からしてわかってなかったようです
ご指摘いただいたところを i<5 と書き直したらエラーなくやりたかった動作できました!
Lengthまだ使ったことないので今後勉強して使っていけたらと思います
本当助かりました ありがとうございます!
782
(1): タワー ◆j2ZL4YtpzY 2020/03/08(日)20:15 ID:2ph6JttP(1) AAS
>>771
canvasを複数使っており、canvas自体のソートとcanvasにアタッチしたなんか紫色のソートなんとかで管理してます

透明なのが乗ってるのもcollider含んでるのは透過させてない…筈なので大丈夫な筈です

>>772
タップイベントが重なるとダメ…
マジっすか…
背景タップするとダイアログを消す様な処理とか思った通り動いているので勝手に手前が優先されると思ってましたが…
省2
783: 2020/03/08(日)21:09 ID:W3WxOA2x(1/2) AAS
よこからすみません
newしたゲームオブジェクトを
Instantiateで出現させるというのは
2度手間で冗長な気がするのですが
複数オブジェクトをInstantiateして管理するのには
上記のようなコードが必要になるのですか?
784: 2020/03/08(日)21:41 ID:Zuof1IeM(1) AAS
4行目でnewしているのは配列
ゲームオブジェクトをnewしている訳じゃないぞ
785
(1): 2020/03/08(日)23:22 ID:W3WxOA2x(2/2) AAS
はい

(難しい)

プログラミングって難しいことを簡単に説明した本が多すぎ
786: 2020/03/09(月)07:43 ID:YdeKUdBn(1) AAS
>>770
色々試してみた結果、エクスポート時にトランスフォーム→スケールを適用→FBX単位スケールとすることで
ボーンのサイズも想定通りになりました

エクスポート時の問題らしいことは分かったのですが、何故これでそうなるのかはいまいちわかっていません

また作業するのに面倒な手間が一つ増えたな
試行錯誤しながらで手戻りも多いからなおさら堪える
いいワークフローないものですかね
787
(1): 弟子 2020/03/09(月)10:20 ID:wbYfVweV(1) AAS
>>782
「unity canvas 複数 タッチ」とかでgglと情報ありますね
>タップイベントが重なるとダメ…
ではなく、タップするオブジェクトが重なっているとです、日本語むずいですね

レイはRaycasterでまぁ良くある手で光線を放ってぶつかったらっていうのです

>>785
別段難しくはないです、外人が日本人に「あなた日本語うまいね難しいのに」
省6
788: タワー ◆j2ZL4YtpzY 2020/03/09(月)12:11 ID:tbF3U5ci(1) AAS
>>787
後半の話しですが毎日やるって大変ですがとても有意義ですよね
風邪引かない限りは毎日一行でもコードを書くと誓って実践する事がモチベーション維持から見てもとても大事

まぁ私はその誓いは守れてませんが
789
(1): 2020/03/09(月)13:20 ID:j3uF5KF8(1) AAS
Androidで画面上部にAdmobのバナー分のスペース空けるには
どうしたらいいのでしょうか
固定値ではデバイスによって変わるのでダメだそうですね
自動で計算してくれる方法があるみたいですがよくわかりません
よろしくお願いします。
790
(1): 2020/03/09(月)16:11 ID:uTHhRh67(1/2) AAS
デバッグの基本的な使い方についてお聞きしたいのですが、
ブレークポイントとかいうのって
UNITYの再生ボタンでプレイしても途中で止めれるものなのでしょうか?
あとvisualstudio側で変数参照したりするのってどうやるのでしょうか?
791: 弟子 2020/03/09(月)17:11 ID:wFezfTQ9(1) AAS
>>790
「unity visualstudio デバッグ」で検索
1-
あと 211 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s