====== Create a VCI that moves/scales/rotates with keyboard input ======
Move, rotate and scale a VCI using inputs from keyboard.\\
=== Example data ===
https://virtualcast.jp/products/614fe676102b36cf353a1d47616efdaa450e202c519e5414b7b26ae3652f929c
* Script reference : [[en:vci:script:reference:vciinput | vci.me.GetAxisInput() (Key input)]]
===== Component setting =====
You do not need components other than the SubItem component.\\
In the example below, you need a SubItem called "Target."\\
===== VCI script =====
local _Target = vci.assets.GetSubItem("Target")
function update()
-- Get the axis input.
local axis = vci.me.GetAxisInput()
-- Input log
if axis.x ~= 0 then
print(" X : "..tostring(axis.x))
end
if axis.y ~= 0 then
print(" Y : "..tostring(axis.y))
end
if axis.z ~= 0 then
print(" Z : "..tostring(axis.z))
end
-- Move the Target
local pos = 0.01 * axis + _Target.GetLocalPosition()
_Target.SetLocalPosition(pos)
-- Get input
if vci.me.GetButtonInput(1) then
print(" Button1 pushed")
-- Process rotation
local rot = _Target.GetLocalRotation()
rot = rot * Quaternion.AngleAxis(-30, Vector3.forward)
_Target.SetLocalRotation(rot)
end
-- Get input
if vci.me.GetButtonInput(2) then
print(" Button2 pushed")
-- Process rotation
local rot = _Target.GetLocalRotation()
rot = rot * Quaternion.AngleAxis(30, Vector3.forward)
_Target.SetLocalRotation(rot)
end
-- Get input
if vci.me.GetButtonInput(3) then
print(" Button3 pushed")
-- Process scale
local scale = _Target.GetLocalScale()
if scale.x < 0.2 then
return
end
scale = scale + Vector3.__new(-0.1, -0.1, -0.1)
_Target.SetLocalScale(scale)
end
-- Get input
if vci.me.GetButtonInput(4) then
print(" Button4 pushed")
-- Process scale
local scale = _Target.GetLocalScale()
scale = scale + Vector3.__new(0.2, 0.2, 0.2)
_Target.SetLocalScale(scale)
end
end
Move in XZ direction with keyboard, upward and downward with UI, rotate with 12 and scale with 34.\\
----
====== VCI Script (Description)======
-- Get the axis input.
local axis = vci.me.GetAxisInput()
-- Input log
if axis.x ~= 0 then
print(" X : "..tostring(axis.x))
end
GetAxis always has the value of the state when pushed.\\
You can use it as is when moving things, but to show it on consoles, it is recommended not to display it when the value is 0.\\