見出し画像

【RobloxStudio】種をまいて花を咲かせてみた

こんにちは!

最近のインターネットは殺伐としてて、元気がなくなっちゃいます。
けつべつがいたあるコミュニティーでも、いろんな人に困ったことをしている人がいます。ターゲットにされるかもしれないと思うと不安になるし、何よりその人のことが心配です。
喧嘩もトラブルもなかった平和だった頃に戻りたい😭

平和の象徴といえば花。
ということで種をまいて花を咲かせることにしました!!



最初に用意したもの

・種と花

芽が生えて、つぼみができて、花が咲くようにしたいので、それぞれ用意しました。
つぼみと花は二つ以上のパーツでできているので、Modelでひとまとめにしておきます。

ここでは種に「seed」
芽に「f1」
つぼみのモデルに「f2」
咲いた花のモデルに「f3」と名付けています。

種以外のモデルは全てAnchorで固定し、CanCollideはオフにしてください。


f1、f2、f3は一本になるように重ねます。整列ツールを使うと楽。
f2、f3のパーツは全て透明にして、f1だけが見えるようにします。

f1、f2、f3をModelでひとまとめにし、名前を「flower」にします。

flowerの中にはNumberValue(NValue)を入れて、その中にScriptも入れておきます。花の成長段階を判断するために必要です。

これができたらseedとflowerをServerStorageのなかに移動しておきます。



・ジョウロツール

とって(Handle)をお忘れなく!

水をあげるための道具を用意します。

透明な円柱(atari)を用意し、溶接してくっつけます。
プロパティからMasslessをオン。CanCollideとCanTouchはオフにしてください。
ツールを持った時に円柱が前に向き、地面と触れるようにしてください。
前に向かない時はツールのプロパティにあるGripのOrientationを。地面に触れない場合は円柱の位置を調整してください。

円柱が前の方に向いている

後でこの円柱が種や花に触った時、成長するように設定します。



・種ツール

箱は、CanCollideをオフにした透明な小さい箱(seed)を溶接します。あとで透明な箱と同じ位置から種が出るようにします。




種をまく

まずは種をまくための道具を作ります。
taneの中にスクリプトを入れてこのように書きます。

function onActivated() --ツールが起動したら
	local seed = game.ServerStorage.seed:Clone() --ServerStorageの中にあるseedをクローンする

	seed.Position = script.Parent.seed.Position --ServerStorageの中にあるseedを、種ツールにくっつけた透明な箱(seed)と同じ位置にクローンする
	seed.Parent = workspace --Workspace内にクローンする
	wait(1)
	end

script.Parent.Activated:connect(onActivated) --ツールを起動した時に実行

これでツールを持った状態でクリック(タップ)した時に、箱から種が出てくるようになるはずです。

種が出た!




水をやる

次は、地面に落ちた種や花に水をあげれるようにします。
ジョウロツールの中にスクリプトを入れ、こう書きます。

local atari = script.Parent.atari


function onActivated() --ツールが起動した時に
	atari.CanTouch = true --CanTouchがオンになる
	script.Parent.mizuderu.water:Play() --水の音が流れる
	wait(1)
	atari.CanTouch = false --CanTouchがオフになる
end


function touched(tt)
	if tt.Name == "seed" then --種に触れた場合
		
	    atari.CanTouch = false
		local flower = game.ServerStorage.flower:Clone()
		flower:SetPrimaryPartCFrame(CFrame.new(tt.Position))
		flower.Parent = workspace
		tt:Destroy() --種は消える
	end
	
	if tt.Name == "f1" then --花に触れた場合
        atari.CanTouch = false
		tt.Parent.NValue.Value = tt.Parent.NValue.Value + 1 --NValueの数字が1増える
	end
end

script.Parent.atari.Touched:Connect(touched)
script.Parent.Activated:connect(onActivated)

透明な円柱(atari)のCanTouchが一秒だけオンになり、そのあいだに種や花に触れることで、それらが成長するように書きました。

atariに種(seed)が触れると種が消え、種があった場所に芽が生えます。
花に触れた場合は、花の成長段階を判断するNValueの数字が1増えます。




育つ花

ServerStorageの中に入れたflowerのNValueのスクリプトにはこう書きました

local NValue = script.Parent
local flower = script.Parent.Parent

function changed() --NValueのValueが変化したら、Valueを確認する
	
	if NValue.Value == 1 then --Valueが1だったら
		flower.f1.Transparency = 1
		for _, child in pairs(flower.f2:GetDescendants()) do --f2の全てのパーツ
				child.Transparency = 0 --パーツが見えるようになる
		end
		
		
	    elseif NValue.Value == 2 then
		  for _, child in pairs(flower.f2:GetDescendants()) do
			child.Transparency = 1
		  end
		
		  for _, child in pairs(flower.f3:GetDescendants()) do
			child.Transparency = 0
		  end
		
		
	    else
		  script.Enabled = false
	
	end

end

NValue:GetPropertyChangedSignal("Value"):Connect(changed) --NValueのValueが変化したときに実行

NValueのValueが変化するとスクリプトが実行されます。

まず、花の芽(f1)が見える状態で一回水をやるとNValueが1になります。
NValueが1の場合、f1を透明にし、つぼみ(f2)の中にある全てのパーツの透明度を0にします。
こうすることで、花が芽からつぼみに成長したように見えます。

NValueが2の場合、今度はつぼみ(f2)を透明にし、咲いた花(f3)の透明度を0にして見えるようにします。


つぼみ

ジョウロを使うことで花が一段階ずつ成長し、咲きました。
これで完成!!


花はどこにでも咲かせることができます。世界中に花を咲かせましょう。
どうかあの人に届きますように!



アレンジしていろんな花を咲かせてみてください!

〜おしまい〜