uLua实现相机跟随

来源:互联网 发布:儿童编程培训班 编辑:程序博客网 时间:2024/05/21 14:13

http://pan.baidu.com/s/1gfnydmN



GameManager = {mousePos,    forwardOffset,    camera,transform,    speed = 0.1,    height = 2}function GameManager:Start()GameManager.camera = Camera.mainlocal female = GameObject.Find("nvzhang")local femaleTranform = female:GetComponent("Transform")GameManager.mousePos = femaleTranform.positionGameManager.transform = femaleTranformlocal transform  = GameManager.camera:GetComponent("Transform")GameManager.forwardOffset = Vector3.__mul(transform.forward, -10)endfunction GameManager:Update()if (Input.GetMouseButtonDown(0)) thenGameManager:RayControl()endif (Vector3.Distance(GameManager.transform.position, GameManager.mousePos) > 1) then  local female = GameObject.Find("nvzhang")local controller = female:GetComponent("CharacterController") local v1 = Vector3.__sub(GameManager.mousePos, GameManager.transform.position)local v2 = Vector3.ClampMagnitude(v1, GameManager.speed);  controller:Move(v2);      endGameManager:NormalMoveCamera(GameManager.transform)endfunction GameManager:RayControl()local mainCamare = Camera.main -- 向屏幕发射一条射线local ray = mainCamare:ScreenPointToRay(Input.mousePosition)local hitlocal r1, hit = Physics.Raycast(ray, hit, 200)if r1 == true then-- 获取碰撞点坐标  GameManager.mousePos = hit.point;   GameManager.transform:LookAt(Vector3(hit.point.x, GameManager.transform.position.y, hit.point.z))endend-- 计算跟随坐标function GameManager:CalcCameraPos(pos)return Vector3.__add(GameManager.forwardOffset, pos)end-- 摄像机跟随人物function GameManager:NormalMoveCamera(goForm)local transform = GameManager.camera:GetComponent("Transform")local v1 = GameManager:CalcCameraPos(goForm.position)local v2 = Vector3.__mul(transform.forward, GameManager.height)transform.position = Vector3.__sub(v1, v2)    transform:LookAt(goForm)end


0 0