unity3d控制物品的移动(鼠标或上下左右WASD)
2017-05-05 11:44
2675 查看
通过 Mathf.Clamp控制区域范围
两个不冲突 可同时存在
上下左右和WSAD 的控制
使用前提:给对象添加刚体 Componet —-> Physics —-> rigidbodypublic float speed; public float minX; public float maxX; public float minZ; public float maxZ; //这个是视角旋转了90度的 所以移动的面是xz 这个可以根据自己的需求做对应的变化 private void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); GetComponent<Rigidbody>().velocity = movement * speed; GetComponent<Rigidbody>().position = new Vector3( Mathf.Clamp(GetComponent<Rigidbody>().position.x, minX, maxX), 0.0f, Mathf.Clamp(GetComponent<Rigidbody>().position.z, minZ, maxZ) );//空间位置进行一个限定 }
鼠标按住移动
使用前提:给对象添加碰撞盒 Componet —-> Physics —-> Box Collidervoid Start() { StartCoroutine(OnMouseDown()); } int minXX = 301; int minYY = 58; int maxXX = 654; int maxYY = 492; IEnumerator OnMouseDown() { Debug.Log("OnMouseDown"); //将物体由世界坐标系转换为屏幕坐标系 Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);//三维物体坐标转屏幕坐标 //完成两个步骤 1.由于鼠标的坐标系是2维,需要转换成3维的世界坐标系 // // 2.只有3维坐标情况下才能来计算鼠标位置与物理的距离,offset即是距离 //将鼠标屏幕坐标转为三维坐标,再算出物体位置与鼠标之间的距离 Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z)); while (Input.GetMouseButton(0)) { Debug.Log("GetMouseButton----Input.mousePosition.x y z" + Input.mousePosition.x+","+ Input.mousePosition.y+","+ Input.mousePosition.z); //得到现在鼠标的2维坐标系位置new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z); Vector3 curScreenSpace =new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z) //将当前鼠标的2维位置转换成3维位置,再加上鼠标的移动量 Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset; //curPosition就是物体应该的移动向量赋给transform的position属性 transform.position = curPosition; yield return new WaitForFixedUpdate(); //这个很重要,循环执行 } }
两个不冲突 可同时存在
相关文章推荐
- Unity3D鼠标控制摄像机“左右移动控制视角+WASD键盘控制前后左右+空格键抬升高度”脚本
- unity中如何用鼠标右键控制摄像机视角上下左右移动
- Unity3D游戏场景之鼠标点击地面控制人物移动
- <Unity3D>上下左右 键控制人移动
- jQuery实现用方向键控制层的上下左右移动
- Unity3D鼠标控制角色移动
- 【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转
- unity3d之鼠标控制人物移动
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- 键盘控制div上下左右移动 (转)
- Isometric Game Programming 笔记(二)按键控制地图上下左右方向移动
- 【AS3代码】键盘控制影片剪辑上下左右移动!!
- Unity 3D 控制物体上下左右均匀移动脚本
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- js实现按键球,小球随键盘上下左右控制移动
- Unity3D之鼠标控制角色移动与奔跑示例
- 【 java版坦克大战--事件处理】 键盘控制小球上下左右移动
- JAVA用画板JFrame画布Panel画笔Graphics画100个星星可以任意拖拽,可以按上下左右控制字或者月亮的移动,shift控制移动字还是月亮-end版
- [unity3d]鼠标点击地面人物自动走动(也包含按键wasd&space控制)
- unity3d 控制鼠标的移动范围