ガチャを作りたい part2

2018年11月20日火曜日

Godot Engine ガチャ

 ということで今度は回すと確率で変わるガチャを作りました。やりたい気持ちが先行しまくってレア度の次にまた抽選して同レア度にいっぱいいる状況みたいにしたり、出てきた画像に対応した名前を表示したりしちゃいました。うおお。
 こんな感じ


 絵もキャラクターも相変わらず過去作の使い回しです。アンとぬーくん、良かったら遊んでね!

 構成はこんな感じ。



 コードはこんな感じに落ち着きました。
extends CanvasLayer
const endou = preload("res://image/Actor_1_4.png")
const paka = preload("res://image/Actor_4_0.png")
const nukun =preload("res://image/Actor_8_0.png")
const aberia = preload("res://image/Actor_2_0.png")
const higan = preload("res://image/Actor_3_0.png")
const sobagara = preload("res://image/Actor_6_0.png")
const gabera = preload("res://image/Actor_7_0.png")
func _on_Button_pressed():
var percent = rand_range(0,100)
var Rcharaname = rand_range(0,3)
var SRcharaname = rand_range(0,2)
if percent > 15 :
$NumberLabel.text = "R"
if Rcharaname > 0 and Rcharaname < 2 :
$CharaName.text = "エンドウ"
$CharaImage.texture = endou
if Rcharaname > 1 and Rcharaname < 3 :
$CharaName.text = "パカ"
$CharaImage.texture = paka
if Rcharaname > 2 and Rcharaname <= 3 :
$CharaName.text = "ぬーくん"
$CharaImage.texture = nukun
if percent <= 15 and percent > 5 :
$NumberLabel.text = "SR"
if SRcharaname > 0 and SRcharaname < 2 :
$CharaImage.texture = sobagara
$CharaName.text = "ソバガラ"
if SRcharaname > 1 and SRcharaname <= 2 :
$CharaName.text = "ガーベラ"
$CharaImage.texture = gabera
if percent <= 5 :
$NumberLabel.text = "SSR"
if SRcharaname > 0 and SRcharaname < 2 :
$CharaImage.texture = aberia
$CharaName.text = "アベリア"
if SRcharaname > 1 and SRcharaname <= 2 :
$CharaName.text = "ヒガン"
$CharaImage.texture = higan
Blogger(このブログサービスです)の仕様なのかコードを引用にするとすごく見辛い。本来は結構見やすいコードのはず。プログラミング初心者なのでわからないですけど。



 constとvarの違いがわからなくて、とりあえず random image godot で出てきた記事がconst使ってたからconst使いました。公式見るとpreloadを使うかloadを使うかの違いっぽい……? わからない……

 とりあえずconstで名前と対応するファイルを定義しました。
 percent で最初使ってたのはrandfだったんですけど、あれ小数点第6位まで出てくるらしく、なんていうかとりあえずは100%までで良かったのでrand_rangeで1~100までにしました。
 RcharanameとSRcharanameは適当に。この数字でさらに抽選して、Rの中の〇〇、SRの中の〇〇ってなります。最初はpreloadで定義した絵を適当に表示してたんですけど、それだと対応した名前が出せねえな! って思ったのでこんなごちゃごちゃしましたもっといい方法はないものか。でもそうやって探すのも楽しい。
 何かの参考になれば……godot engine gachaで検索しても出てこなかったので書いてるので……でもこれもプログラミングめっちゃ初心者のブログなので文句は受け付けません。

 そういえば仕様なのかわからないんですけど、if Rcharaname => 0 and Rcharaname <=1 みたいに両方に=>とか<=とかにするとお前それ想定外なんやけど(意訳)的なエラー吐かれるのなんなんでしょうかね。私わかりません。

 次はパーティクルとかつけたいなあ……