切り絵が趣味の僕がプログラムや創作物について書き溜めるブログ (original) (raw)
この広告は、90日以上更新していないブログに表示しています。
こんパウ!!
Valorantにはまってほぼ毎日Valorantずけだかシルバー、ブロンズたいをぬけれないです ToT
今回は以下のポストの反響がいいのでなんで**Cookieに阻まれても購入できるのか**説明してみようと思います。
ValorantをPaypalから課金しようとたらCookieに阻まれて購入できなかったけど
tabキーで「Paypalのポリシー」を選択しているところから二回tabキーを押してEnterキーを押すと購入できました。
— パウ:Paw_WIZARD (@paw_wizard) February 2, 2024
■事象の整理
Valorantを開いて、Valorant内の通貨であるヴァロラントポイントをPayapalで購入しようとしたらCookie消えずに購入にすすめません。
「お支払い方法選択」で「Paypal」を選ぶ。
とりあえず一番安い500ヴァロラントポイントを選び、「次へ」を押下する。
「はい、Cookieを受け入れます」が押しても反応しません!!
tabキーで無理やり「はい、Cookieを受け入れます」を押そうとしても反応しません。
■ではどうすればいいのか?
tabキーで「Paypalのポリシー」を選択しているところから二回tabキーを押してEnterキーを押す。
が結論です。
■なぜ上記の操作でうまくいくのか
Cookieに阻まれている画面で右クリックすると「ページのソースを表示」がありますのでこちらを押下する。
なんかよくわからないテキストがでてきます。
これは「Cookieに阻まれている画面」を描画する内容をHTMLというWebページを作成するための言語にしたものです。
つまりこれをブラウザから開けば同じ画面が現れます。
試しにやってみます。
先ほどのテキストをデスクトップにvalo-paypay.htmlとして保存。
.htmlにすることでこのテキストはブラウザで開く形式だよ!!と示しています。
そしてをダブルクリック!!
.txtの場合は右クリックで「プログラムから開く」、「別のプログラムを選択」からGoogleChrome等を選ぶと開けると思います。
開かれるとなんと同じ画面が!!
これはあくまでも見た目だけの張りぼてなので操作をしても何も起きません。
なので安心して操作してみてください。
ではさっそく、「はい、Cookieを受け入れます」をクリックしてみますと「同意して続行」が現れました!!
この子を押したいわけです。
でも、マウスは使用できません。なのでキーボード操作になるわけです。
試しにtabキーを押していくと動きが理解できると思います。
で以下の結論になるわけです。
tabキーで「Paypalのポリシー」を選択しているところから二回tabキーを押してEnterキーを押す。
今日はここまで!
最後まで読んでいただきありがとうございました。
この記事がよかった、もっといろんな記事を書いて欲しい!など応援したいなぁ~と思っと方はツイッターのフォローとはてなブログの読者になってください!!
あなたの応援が、僕が記事を書くための力になります!!
ではでは、いいゆめみろよ~~~
リンク
こんぱう~~~
"VRC Udonトランプ自動配布機能付き"のコードについて解説いたします。
■基本的なUdon Behaverの設定の仕方
[Add Component]からUdon Behavivourを選択。
Program SouirceをUdon C# Program Assetにして[New Program]を押下。
[Create Script]を押下。
SynchronizationをManualに変更して、Program Scriptからスクリプトファイルを開くことができます。私はVScodeを使用するように設定しています。
dealbuttonとCubeで使用しているスクリプトファイルがどんな風になっているのか説明します。
完成したスクリプトファイルをUnityで適用すると以下のようになります。
dealbutton
Cube
サンプルコード
dealbuttonのコード
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using System;
public class card : UdonSharpBehaviour
{
[SerializeField] GameObject m_obj;
[SerializeField] GameObject textObject;
[SerializeField] GameObject playCardCenter;
Vector3 worldPos_start;
Quaternion worldRot_start;
Vector3 worldScale_start;
public float radius = 1.0f;
public int temp(int x){//配列の中身をシャッフルする関数
int i;
int temp;
int value1;
int value2;
for(i = 0; i <= 10000; i++){
value1 = UnityEngine.Random.Range(0, x.Length);
value2 = UnityEngine.Random.Range(0, x.Length);
temp = x[value1];
x[value1] = x[value2];
x[value2] = temp;
}
return x;
}
void Start () {//開始時にカードの配置を取得する
worldPos_start = m_obj[0].transform.position;
worldRot_start = m_obj[0].transform.rotation;
worldScale_start = m_obj[0].transform.lossyScale;
}
public override void Interact()
{
int entry_num = textObject.GetComponent<text>().entry_num;//別のオブジェクトから参加人数を獲得
int i;
i = (entry_num == 0)? 1:entry_num;
int user_num = new int[i];//カードを配るプレーヤーの順番を保持する変数
for(i = 0; i<entry_num; i++){//user_numの初期値
user_num[i] = i;
}
user_num = this.temp(user_num);//カードを配るプレイヤーの順番を入れ替えている
int trampList = new int {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53};
trampList = this.temp(trampList);//カードをシャッフル
// transformを取得
Transform myTransform = this.transform;
// ワールド座標を基準に、座標を取得
//Vector3 worldPos = myTransform.position;
//worldPos.x -= 0.219f; // ワールド座標を基準にした、x座標が入っている変数
//worldPos.y += 0.0f; // ワールド座標を基準にした、y座標が入っている変数
//worldPos.z -= 1.0f; // ワールド座標を基準にした、z座標が入っている変数
if(entry_num == 0){
for( i = 0; i<trampList.Length; i++){
Networking.SetOwner(Networking.LocalPlayer, m_obj[i].gameObject);//カードのオーナーリクエストを送信
m_obj[trampList[i]].transform.rotation = worldRot_start;//カードの設置場所にもどす(位置)
m_obj[trampList[i]].transform.position = worldPos_start;//カードの設置場所にもどす(角度)
}
}else{
for( i = 0; i<trampList.Length; i++){
Networking.SetOwner(Networking.LocalPlayer, m_obj[i].gameObject);//カードのオーナーリクエストを送信
m_obj[trampList[i]].transform.rotation = Quaternion.Euler(0.0f, 0.0f, 0.0f);// カードの回転を初期化
m_obj[trampList[i]].transform.position = playCardCenter.transform.position;// ワールド座標での座標を設定
var angle = 360/entry_num*(user_num[i%entry_num]);
var sin = Math.Sin(angle * (Math.PI / 180));
var cos = Math.Cos(angle * (Math.PI / 180));
m_obj[trampList[i]].transform.Translate [*1](#f-98a29470 "float)sin1.2fradius,0.2f,(float)cos1.2fradius);//カードを配る m_obj[trampList[i]].transform.rotation = Quaternion.Euler(0.0f, angle, 0.0f);//カードを立てる
m_obj[trampList[i]].transform.Translate ( -0.01f * (Mathf.Floor(i/entry_num)-54/entry_num/2)* worldScale_start.x, 0.0f, 0.001f * Mathf.Floor(i/entry_num");//カードをずらす
Cubeのコード
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class text : UdonSharpBehaviour
{
public GameObject score_object = null; // Textオブジェクト
[UdonSynced(UdonSyncMode.None)] public int entry_num = 2; // スコア変数
Text score_text;
// 初期化
void Start () {
score_text = score_object.GetComponent<Text> ();
// テキストの表示を入れ替える
score_text.text = "参加人数:" + entry_num;
}
public override void Interact()
{
var player = Networking.LocalPlayer;
score_text = score_object.GetComponent<Text> ();
if (player.IsOwner(this.gameObject))
{
CountUp();
}
else
{
// Owner以外が押したら、Ownerにカウントアップさせるように命令する
SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.Owner, nameof(CountUp));
}
}
public override void OnDeserialization()
{
score_text.text = "参加人数:" + entry_num; // データ表示更新
}
public void CountUp()
{
entry_num += 1;
if(entry_num >= 9){
entry_num = 0;
} // データ更新
RequestSerialization(); // 同期更新
score_text.text = "参加人数:" + entry_num; // データ表示更新
}
}
usingでUdonSharpだったり必要なモノを使えるようにしています。
[SerializeField]を付けることでUnityの画面で値を入力できるようになります。
参考文献:【初心者Unity】[SerializeField]ってなに? | TECH PROjin
Gameobjectのは配列という意味になります。
[SerializeField] GameObject m_obj;
はトランプを格納するので54の大きさの配列になります。
Vector3 worldPos_start;
Quaternion worldRot_start;
Vector3 worldScale_start;
はトランプの初期の位置、角度、大きさを格納する箱です。
public float radius = 1.0f;
トランプを配るときのプレイヤーの距離を調節するためのモノです。
小さいと近くになって、大きくすると遠ざかります。
void Start () {//開始時にカードの配置を取得する
worldPos_start = m_obj[0].transform.position;
worldRot_start = m_obj[0].transform.rotation;
worldScale_start = m_obj[0].transform.lossyScale;
}
void Start()は開始時に呼び出されるところなのでここで初期値を設定しています。
public int temp(int[] x)ではトランプをシャッフルするのに使っています。
・ランダムに二枚のカードを選ぶ
・交換する
この二つの動作を10000回くりかえしてトランプを混ぜたことにしています。
public override void Interact() はこのコードを適応したモノがつかまれたときに呼び出されます。
Networking.SetOwner(Networking.LocalPlayer, m_obj[i].gameObject);//カードのオーナーリクエストを送信
これがないと誰かがトランプを掴んでしまったらトランプの位置を動かすことができません。
*1:float)sin*1.2f*radius,0.2f,(float)cos*1.2f*radius);//カードを配る
m_obj[trampList[i]].transform.rotation = Quaternion.Euler(0.0f, angle, 0.0f);//カードを立てる
m_obj[trampList[i]].transform.Translate ( -0.01f * (Mathf.Floor(i/entry_num)-54/entry_num/2)* worldScale_start.x, 0.0f, 0.001f * Mathf.Floor(i/entry_num
こんぱう~~~!!
ここではVRChatで使えるトランプを作成します。
カードを作って、手で持てるようにして、自動でカードを配ってくれるようにする。
そんな感じにトランプを作成します。
この記事の目的はプログラミングをなんとなく触ったことあるけど、U#はわからないっていうかた、どうしようしたらいいのか分からないってかたが読んでくれて少しでも手助けが出来たら嬉しいなぁと思って書いています。では、一緒に頑張っていきましょう!!(サンプルをBoothにて公開中:https://paw.booth.pm/items/3650297)
事前準備
以下の3点をUnityにインポートしておいてください。ここでは詳しくは説明しません。
・VRCSDK3-WORLD(必須)
(https://vrchat.com/home/download)
・UdonSharp(必須)
(初心者向け / Udon Sharp(U#) ダウンロード、インポート方法の詳細解説)
・CyanEmu(あると便利)
(https://github.com/CyanLaser/CyanEmu)
トランプ自動配布機能付きの概要
用意するモノ一覧
・トランプ54枚(一枚一枚、別オブジェクトで用意する)
・シャフルボタン
- シャフル文字を表示するモノ
- ボタンの形
- トランプを配るときの中心になるオブジェクト
・参加人数ボタン
- 参加人数を表示するモノ
- ボタンの形Part2以降に作成するコード
・シャフル用のコード
・参加人数を管理するコード
概要
参加人数が0人のときにシャッフルボタンを押すトランプを初期位置に戻す。
1-8人のときにシャッフルボタンを押すと人数に合わせてトランプを配ってくれる。
(もちろん、トランプは自動でシャッフルされている)
■トランプの作成と設定
54枚すべてのカードを作成して(blenderとか)、Add ComponentからBox ColliderとVRC Pickup、VRC Object Syncを入れます。Rigid bodyはVRC Pickupを入れたら一緒に入った気がします。なかったらこれも入れてください。
・VRC Object Syncwでトランプの位置が同期されるようになります。
・VRC Pickupでトランプをトリガーできるようになります。
・「Is Trigger」にチェックを入れると物理的接触がなくなります。チェックを入れてないとトランプにのれたり、歩いているとトランプにぶつかったりします。
・「Is Kinematic」にチェックを入れるとAddForceや重力の影響を受けなくなります。チェックを入れないと空間をトランプが飛んでいく原因になります。
この設定をすべてのトランプに実施します。
Shiftを押しながらすべてのオブジェクトを選択してから、設定すると全部同じ設定にできるはずです。
■シャッフルボタンについて
・buttonは空のオブジェクトでCanvasとdealbuttonまとめるためのモノです。
・Canvasはdealの文字を表示するためのモノです。Canvasで文字の表示する場所をつくってTextで表示する文字を設定しています。
・dealbuttonは黄色の直方体です。ボタンを押したらトランプを配るようにプログラミングしています。(プログラミングの内容については次回以降に詳しく説明します。)
dealbuttonにはBox ColliderとUdon Behavivourを追加します。
Udon Behavivourは自作したコードを使用するためのものです。
Udon BehavivourのSynchonization MethodをManualにします。
・Continuousは連続同期
・Manualは手動同期
■参加人数ボタンについて
・numは空のオブジェクトでCanvasとCubeまとめるためのモノです。
・Canvasで参加人数を表示しています。
・Cubeで参加人数の加算処理を行っています。Cubeを押したらCanvasに変更した参加人数を表示するようにしています。(プログラミングの内容については次回以降に詳しく説明します。)
Box ColliderとUdon Behavivourを追加します。
Udon BehavivourのSynchonization MethodをManualにします。
■トランプを配るときの中心になるオブジェクト
playCardCenterという名前で空のオブジェクトを作成します。
これでコードを書くための準備ができました。
次回からどんな処理を行っているのか解説していきます。
本日はお疲れさまでした!!
いい夢を~~~~
2021年を振り返ってみようと思います。
まずは引っ越しですね。
学生生活が終了し、会社に勤めるため東京都にお引越し。
携帯もiPhoneからAndroidに乗り換えました。
楽天モバイルの一年間無料期間でPCもVRもテザリングでここまでやってきました。
最初はネットの回線を引くつもりでしたが、借りた場所が工事ダメらしくて...。
幸いにも最低限使えるレベルだったのでよかったです。
たまに回線が切れたりするのが難点でしたが...。
無料期間が来年の3月に切れるのでどうするのか考え中です。
つぎに大きかったのは、自分でお金を稼げるようになったので投資にもチャレンジしました。
S&P500という投資信託を買い足すだけなんですけどね。
また、学生ではなくなり会社勤めになったことで自分の使える時間が少ないなかでもブログやアバター制作を続けるという目標を年初めに建てました。
ブログは月一回更新という状態で目標を達成いたしました。
アバター制作はBoothで販売できるような形で完成はしていないものの空いた時間を使って服装はどうするか、テクスチャは?など、少しづつではあったけど創作活動を続けることができてとてもよかったです。
ゲームワールド制作の企画は頓挫していしまいました...><
ちょくちょくTillさんからUnityのコード作ってよと依頼が来るのは嬉しいですね。
だいたい、できないのでyuuさんに丸投げするのですが...。
もり上がるベットのシェーダーは作れなくてごめんよ(_ _)
会社の仕事に引っ張られて思うように趣味に力を注げなかったかなと思います。
資格の勉強があったので平日は割とそっちがメインになったり、仕事後は何もやる気がでなくて...って感じでした。
そう考えると会社行きながらアバター改変している方々はどうなってんだーーーって感じです。
なぞです謎。
ClusterのゲームジャムをPawファミリーで参加してすごろくゲームを作成して、特別賞を受賞したのはとってもいい思い出になりました。次は冬にやるとかいっていたけどいつなんだろう??
2021年はあまりVRChatのイベントに出店しなかったなー。
制作が上手くすすでいないことで出すものがないといえばないんだけれど...。
2022年はいくつか出店したいですね。
4コマ漫画でPawファミリーの日常とか書きたいんだけどなぁ。
起承転結をつくるのと、絵が描けなくて...挑戦しようとしたんですけど...う~~~><
来年はどんな一年にしたいですかね
願わくばPawファミリーのみんなとおしゃべりできるこの場所(ディスコード)を維持しつつ、いろんなイベントに参加していきたいです。
Super Tower Defenseの序盤の金策を教えてもらったのでご紹介したいと思います
(教えてくださった方に記事にしてもいいと承諾をもらいました)
序盤
・まずはマシンガンを設置する
てか、マシンガンしか選択しかない
・4500たまったらマシンガンを強化する(1凸)・レールガンを購入(12500)
・レールガンを購入(12500)
・レールガンを二回強化する(片方のレールガンのみ2凸)
・WAVE32になるまでレーダーを2凸にして、レーダーを設置するを繰り返す・マシンガン(2凸)を壊して、ドッスンを設置する
ドッスンの強化はしなくていい
・WAVE55になったら(総マシンの設置台数が19台になってるはず)、もう片方のレールガンを二回強化する(全てのレールガンが2凸)
(火力不足のため)途中で一体だけめちゃ硬いのが来るけどここは無視、ライフで受け止めてください
・WAVE69までいったら序盤は終了
すべてのマシンを壊して新たに設置しなおしてください
どうやって設置するかセンスが問われます
中盤
この設置が終盤まで生き残れるかに大きくかかわるのでとても大事です
マシンを設置するときにぎりぎりをせめてあぁ置けない!!って何度もなりました
いろいろ試してみて、僕が感じたコツは4つ
・大砲は3台はほしい(完凸) 120万
・レーダーは6個ほしい(できれば完凸、1凸でも可) すべて完凸55.5万、すべて1凸25.5万
・ドッスンは2個ほしい(完凸) 7.5万
・ドッスンとドッスンは発動タイミングがずれるように設置しよう
以上を満たしていればWAVE80ぐらいはいけそうです
金額は183万あれば余裕ですね、レーダーを1凸にした場合は153万で済みます。これでも全然問題ないです
今後はレーダーを増設したり、大砲を設置していきましょう
ドッスンは2個で十分そうです
あとは火力が大事!!
終盤
お金が溜まって好きなように配置できるようになります
配置したらやることがないのでひたすら眺めるだけライフが削られれば終われるけど、終わってほしくないーーーみたいな葛藤がうまれます
ここまで来たら自分の配置を信じてただひたすらライフが削られるのを待つだけ
ここで、あるあるなのがライフ削られたから、「ヤバい配置を変えなくちゃ!!」といって、配置を変えると組み方がよくなくて一瞬で終わってしまうことがあります
僕もなんどか「変更しなければもう2~5WAVEぐらいいけたよなぁ」という時があります最後に不可解な現象が起きました
他プレイヤーからはライフが削られているのに、僕目線だと削られていない現象が起きました
あとはQuest2を使っていたからなのか??
fpsを下げて処理落ちをすると寿命がのびる??ってことがあるのかもしれません
そのときのfpsは12とかだった気がします
なんやかんやで僕は最大WAVE250目までいきました
WAVE100を超えてくると1WAVEに一分ぐらいかかるのでめっちゃ時間がかかりました6時間以上だったと思います
昼ぐらいからやって24:00を超えてたような..
もうこれ以上は一人ではできません><
交代制にしないと無理ですね
てか、これ以上はどう配置していいか分から~~~~ん><
武器金額早見表
名称 | 購入 | 強化1 | 強化2 |
---|---|---|---|
マシンガン | 2500 | 4500 | 15000 |
ミサイル | 7500 | 5000 | 40000 |
ドッスン | 10000 | 12500 | 15000 |
レールガン | 12500 | 17500 | 35000 |
レーダー | 12500 | 30000 | 50000 |
大砲 | 50000 | 100000 | 250000 |
メモ:
・ドッスンは複数設置するときはドッスンするタイミングをずらす必要がある
・マシンガンは単体攻撃
・ミサイル、大砲は範囲攻撃
・レールガンは直線貫通攻撃
・レーダーは無凸で範囲拡大、1凸で攻撃速度上昇、2凸でもらえる金額が増加
こんぱう!!
今回はSVGファイルをつかってモデリングをパパッと終わらせて、ひらひらと舞いながら落ちていくパーティクルの作り方を紹介したいと思います
1. 素材となるSVGファイルの取得
まずは紅葉のSVGファイルをとってきましょうCc0のやつだと著作権とか考えなくていいので楽ですね(個人利用のみなら なんでもいいかも、利用規約はしっかり読んでおこう!!)
私はパブリックドメインQ:著作権フリー画像素材集で探してきました
ベクターのダウンロード を押してSVGファイルをダウンロードします
ダウンロードが出来ましたら、Blenderに取り込んでいきます
2. BlenderにSVGファイルをインポート
Blenderを開いたらプリファレンスをクリックして
アドオンでsvgと検索して出てきたモノにチェックを入れてアドオンを有効化します
ファイル/インポート/Scalable Vector Graphicsを選択
紅葉のSVGファイルをBlenderに取り込むことができました
3. 紅葉を調整する
いらない部分を選択してxキーで削除できます
葉脈も削除して一枚の葉っぱになりました
葉身と葉柄が分かれているので両方選択してからCtrl+jで一つにくっつけます
このままだとパスなので オブジェクト/変換/メッシュ と選択してメッシュに変換します
tabキーを押して編集モードにするとこんな感じ
このままだとポリゴン数も多いので、mキーで距離でマージで頂点数を少なくしたり、形や向きを整えます。マテリアルの名前なども変更しておきましょう
4. FBXファイルで出力
オブジェクトを選択してから ファイル/エクスポート/FBX を選択
選択したオブジェクトにチャック。
カメラとランプをshiftキーを選択したままクリックで選択を解除する。
これでFBXをエクスポートをクリック
5. UnityにFBXファイルを持っていく
出力したFBXファイルをUnityにドラッグ&ドロップで持っていきます
Hierarchyで右クリックして、Effects/Particle System を選択する
Inspectorの設定する
以下に私の設定をのせておきます
自分好みに変えるのも面白いと思います
パーティクルを再生すると紅葉が舞い落ちてきます!!
最後まで読んでいただきありがとうございます
何かわからないことやつまづいた点があれば教えてくださると嬉しいです!!
これからもいろいろな情報を発信していくのでTwitterのフォローやブログの読者になってください
いい夢見ろよ!!
こんぱう~~~
今回はいつ現れるかわからないヤツを倒すための道具をモデリングしていきます
一家に一つは絶対に必須です!!
1. 参考画像を用意する
Googleでゴキ〇ェットと検索して、よさげな画像を入手する
入手出来たら、blenderに背景画像として挿入しましょう
追加>画像>背景をクッリク
ウィンドウから挿入したい画像を選択して”下絵を読み込み”をクッリク
画像が挿入されました、向きや位置を調整してモデリングしやすい位置に画像を配置しましょう
(Gキーで移動、Rキーで回転、Sキーで拡大縮小)
深度を前にして、
不透明度にチェックをして値を小さくしておきましょう
この設定にすることで、下の画像のように背景がオブジェクトの前に透けて表示されるのでこの後のモデリングがしやすくなります
2. モデリング
まずは缶の部分から作っていきます、こんな感じに缶の周りをなぞるように頂点を配置していきましょう
配置ができたら、スパナアイコン>モディファイヤーを追加>スクリューをクリック
そうすると平面だった缶が360度回転されて三次元になりました!!
ビューのステップ数やレンダーを変えるとポリゴン数が変化するのでお好みで調整してください
モディファイヤーを適用しましょう
左の画像を右の画像のようにシームをマークしてとりあえず缶は完成
UV展開をして
テクスチャを書いて
なんやかんやして、完成!!!
スプレーが出るようにUnityでパーティクルも作りました~~~
これでVR上で安心して寝れます!!