当前位置:首页 >> 硬件技术 >> 【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)...,hitao嗨淘官方旗舰店

【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)...,hitao嗨淘官方旗舰店

cpugpu芯片开发光刻机 硬件技术 9
文件名:【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)...,hitao嗨淘官方旗舰店 【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)...

 由于最近搞2D游戏, 下面的代码配合NGUI来使用 。。。 将代码拖到角色身上就OK, 实现了角色转向、移动 ,想看效果的可以将代码下下来~ 

 用到了向量来计算角度 以及方向,   得恶补下向量知识了 。。。 

 

代码参考:

1 using UnityEngine; 2 using System.Collections; 3 4 public class Test : MonoBehaviour { 5 6 private bool flagMove; 7 private RaycastHit hit; 8 private Vector3 mousePos; 9 private Vector3 targetDir;10 // Use this for initialization11 void Start () 12 {13 flagMove = false;14 }15 16 void Update ()17 {18 19 if(Input.GetMouseButtonDown(0))20 {21 RayControl();22 }23 if(flagMove)24 {25 if(Vector3.Distance(transform.position,mousePos)>0.1)26 {27 transform.Translate(transform.worldToLocalMatrix* transform.right * Time.deltaTime*0.5f);28 }29 else30 {31 flagMove=false;32 }33 }34 }35 36 void RayControl()37 {38 Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);//从Camera发射射线到屏幕39 if(Physics.Raycast(ray,out hit))//射线碰撞检测40 {41 mousePos=hit.point;42 mousePos.z=transform.position.z;43 targetDir=mousePos-transform.position;//计算到目标点的方向 44 Vector3 tempDir=Vector3.Cross(transform.right,targetDir.normalized);45 float dotValue=Vector3.Dot(transform.right,targetDir.normalized);46 float angle=Mathf.Acos(dotValue)*Mathf.Rad2Deg;//计算夹角47 if(tempDir.z < 0)//根据叉乘判断夹角的正负48 {49 angle=angle*(-1);50 }51 if(!float.IsNaN(angle))52 {53 transform.RotateAround(transform.position,Vector3.forward,angle);//转向目标点54 }55 56 flagMove=true;57 }58 }59 }

源码参考:http://files.cnblogs.com/xuling/RoleMove.zip

转载于:https://www.cnblogs.com/xuling/archive/2013/03/05/2944939.html

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2026年1月    »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接