前回覚えたボタンの表示にオブジェクトの移動を組み合わせる。
まずはボタンを押したらオブジェクトが移動するだけの簡単な
スクリプトを組んでみる。
スクリプト編集画面の表示
実践3の要領で緑のブロックのスクリプト編集画面を表示する。
自分が移動するスクリプト
表示したスクリプト編集画面から、実践3と同一のボタン表示プログラムを入力する。
function onLoad()
self.createButton({
click_function = "click_func", -- ボタンを押した時に呼び出す関数
function_owner = self, -- 呼び出す関数のオーナー(省略可)
label = "Test", -- ボタンに表示する文字列(省略可)
position = {0, 1, 0}, -- オブジェクトからみたボタンの位置(省略可)
rotation = {0, 180, 0}, -- オブジェクトからみたボタンの向き(省略可)
width = 800, -- ボタンの横幅(省略可)
height = 400, -- ボタンの縦幅(省略可)
font_size = 340, -- ボタンに表示するフォントの大きさ(省略可)
color = {0.5, 0.5, 0.5}, -- ボタンの背景色(省略可)
font_color = {1, 1, 1}, -- ボタンに表示するフォントの色(省略可)
tooltip = "This text appears on mouseover.", -- ボタンにマウスオーバーした際に表示される文字列(省略可)
})
end
function click_func(obj, color, alt_click)
print("ボタンを表示しているオブジェクト")
print(obj)
print("ボタンを押したプレイヤーの色")
print(color)
print("右クリックだったらtrue")
print(alt_click)
end
今回はボタンを押した時に移動させたいので click_func()の中身を書き換える。
オブジェクトの移動には setPositionSmooth() を使用する。
【setPositionSmooth()参考】
指定する座標はGizmoツールで指定する数値と同一。
function click_func(obj, color, alt_click)
self.setPositionSmooth({0, 2, 0})
end
左右クリックで移動先を変えたり、押した人を表示したりできる。
function click_func(obj, color, alt_click)
msg = Player[color].steam_name .. " clicked"
broadcastToAll(msg)
if alt_click then
self.setPositionSmooth({0, 2, 0})
else
self.setPositionSmooth({4, 2, 4})
end
end
function click_func(obj, color, alt_click)
msg = Player[color].steam_name .. " clicked"
broadcastToAll(msg)
if alt_click then
self.setRotationSmooth({0, 0, 0})
else
self.setRotationSmooth({0, 180, 0})
end
end
他のオブジェクトを移動させるスクリプト
ボタンの表示の際と同様にオブジェクトを指定してあげるとそのオブジェクトが移動する。
redBlock_guid = 'xxxxxx'
function onLoad()
redBlock = getObjectFromGUID(redBlock_guid)
self.createButton({
click_function = "click_func", -- ボタンを押した時に呼び出す関数
function_owner = self, -- 呼び出す関数のオーナー
label = "Test", -- ボタンに表示する文字列
position = {0, 1, 0}, -- オブジェクトからみたボタンの位置
rotation = {0, 180, 0}, -- オブジェクトからみたボタンの向き
width = 800, -- ボタンの横幅
height = 400, -- ボタンの縦幅
font_size = 340, -- ボタンに表示するフォントの大きさ
color = {0.5, 0.5, 0.5}, -- ボタンの背景色
font_color = {1, 1, 1}, -- ボタンに表示するフォントの色
tooltip = "This text appears on mouseover.", -- ボタンにマウスオーバーした際に表示される文字列
})
end
function click_func(obj, color, alt_click)
msg = Player[color].steam_name .. " clicked"
broadcastToAll(msg)
if alt_click then
redBlock.setPositionSmooth({0, 2, 0})
redBlock.setRotationSmooth({0, 0, 0})
else
redBlock.setPositionSmooth({-4, 2, 4})
redBlock.setRotationSmooth({0, 180, 0})
end
end
最終更新:2020年10月08日 18:29