--Xlua控制移动模型的旋转和缩放
local firstPosX = 0
local currentRotY = 0
local roleObj = self
local Input = CS.UnityEngine.Input
local TouchPhase = CS.UnityEngine.TouchPhase
local Mathf = CS.UnityEngine.Mathf
local Quaternion = CS.UnityEngine.Quaternion
local Vector2 = CS.UnityEngine.Vector2
local Vector3 = CS.UnityEngine.Vector3
local oldTouch1=nil
local oldTouch2=nil
local zoomMini = 0.5 --限制缩放最小尺寸
local zoomMax = 2.5 --限制缩放最大尺寸
local beginSize = Vector3(1,1,1) --模型的初始大小
local beginRotation = Quaternion(0,0,0,0) --模型的初始角度
function start()
beginSize=roleObj.transform.localScale
beginRotation=roleObj.transform.localRotation
end
function update()
if (Input.touchCount == 1) then
rotation()
end
if (Input.touchCount >= 2) then
zoom()
end
end
--触摸控制模型旋转
function rotation()
if (Input.GetTouch(0).phase == TouchPhase.Began) then
firstPosX = Input.GetTouch(0).position.x
currentRotY = roleObj.transform.localRotation.eulerAngles.y
end
if (Input.GetTouch(0).phase == TouchPhase.Moved) then
currentPosX = Input.GetTouch(0).position.x
XAxis = firstPosX - currentPosX
if (Mathf.Abs(XAxis) >= 5)then
roleObj.transform.localRotation = Quaternion.Euler(Vector3(0, currentRotY + XAxis, 0))
end
end
if (Input.GetTouch(0).phase == TouchPhase.Ended) then
firstPosX=0
currentRotY = roleObj.transform.localRotation.eulerAngles.y
end
end
--触摸控制模型缩放
function zoom()
newTouch1 = Input.GetTouch(0);
newTouch2 = Input.GetTouch(1);
if (newTouch2.phase == TouchPhase.Began) then
oldTouch2 = newTouch2
oldTouch1 = newTouch1
else
oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position)
newDistance = Vector2.Distance(newTouch1.position, newTouch2.position)
offset = (newDistance - oldDistance)/350
localScale = roleObj.transform.localScale
scale = Vector3(localScale.x + offset, localScale.y + offset, localScale.z + offset)
roleObj.transform.localScale = Vector3(Mathf.Clamp(scale.x, zoomMini, zoomMax),Mathf.Clamp(scale.y, zoomMini, zoomMax), Mathf.Clamp(scale.z, zoomMini, zoomMax))
oldTouch1 = newTouch1
oldTouch2 = newTouch2
end
end
--重置旋转和缩放
function reset()
roleObj.transform.localScale=beginSize
roleObj.transform.localRotation=beginRotation
end
Xlua移动端控制物体旋转和缩放
猜你喜欢
转载自blog.csdn.net/a451319296/article/details/112178702
今日推荐
周排行