物体移动
来源:互联网 发布:外国人看淘宝 编辑:程序博客网 时间:2024/05/01 17:39
物体向鼠标点击位置移动
假设需要移动的物体为Cube(cube)。关键是获取鼠标的位置Input.MousePosition(屏幕坐标),然后将鼠标位置转为世界坐标(其中需要先将Cube的世界坐标转为屏幕坐标,将其z值赋予给MousePosition.z),计算出Cube当前位置与MousePosition之间的距离。
public GameObject cube; private Camera _camera; public float speed=3; private Vector3 cubeScreenPosion; private Vector3 mousePositionWorld; private float xx; private float yy; private float angle; private float speedX; private float speedY; private float dis; private float tempDis; private bool flag=false; // Use this for initialization void Start () { _camera=Camera.main;//获取cube屏幕坐标(由世界坐标转为屏幕坐标) cubeScreenPosion=this._camera.WorldToScreenPoint(cube.transform.position); tempDis=0; } // Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)){ Vector3 mousePosition=Input.mousePosition;//获取鼠标的屏幕坐标 mousePosition.z=cubeScreenPosion.z;//将cube屏幕坐标的z赋给鼠标屏幕坐标 mousePositionWorld=this._camera.ScreenToWorldPoint(mousePosition);//鼠标屏幕坐标转为世界坐标 xx=mousePositionWorld.x-cube.transform.position.x; yy=mousePositionWorld.y-cube.transform.position.y; dis=Mathf.Sqrt(xx*xx+yy*yy); angle=Mathf.Atan2(yy,xx); speedX=Mathf.Cos(angle)*speed*Time.deltaTime; speedY=Mathf.Sin(angle)*speed*Time.deltaTime; flag=true; } if(flag){ cube.transform.Translate(Vector3.right*speedX); cube.transform.Translate(Vector3.up*speedY); tempDis+=speed*Time.deltaTime; if(tempDis>=dis){ flag=false; cube.transform.position=mousePositionWorld; } } }
0 0
- 物体移动
- 物体移动
- 物体移动
- 物体移动和旋转
- android3D物体的移动
- 物体移动篇
- Unity移动物体
- RTS物体移动功能
- unity3d物体移动
- 移动物体监控系统
- Unity3D控制物体移动
- 鼠标控制物体移动
- UE4物体移动
- 游戏物体水平移动
- 点击键盘移动物体
- Translate(用于移动物体)
- fg控制物体移动
- unity 拖动物体移动
- GitHub与Git菜鸟入门
- Avoid The Lakes
- Git - 团队合作利器 Branch 与 Git Flow
- SwitchView安卓自定义控件--切换开关
- 网易内推笔试题2017机器视觉算法工程师
- 物体移动
- Spring+SpringMVC 配置事务管理无效原因及解决方案。
- 对swift中的Optional和闭包的理解
- SDUT 3327 顺序表应用4:元素位置互换之逆置算法
- HDU 5765 Bonds (二进制技巧)
- 线程池
- SQL_电力抢修工程插入数据语句
- mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
- CSU-ACM2016暑假集训比赛6