由于最近搞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 initialization
11     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             else
30             {
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

【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)...相关推荐

  1. 【Unity3D游戏开发】基础知识之Tags和Layers (三二)

    Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...

  2. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  3. html5游戏开发-零基础开发RPG游戏-开源讲座(四)

    了解上三篇的内容请点击: html5[color=rgb(68, 68, 68) !important]游戏开发-零基础开发RPG游戏-开源讲座(一) http://www.html5cn.org/a ...

  4. 游戏开发心得——书籍篇——《游戏引擎框架》-导论

    游戏开发心得--书籍篇--<游戏引擎框架>-导论 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 学习<游戏引擎框架> ...

  5. Unity3D游戏开发-宣雨松读书摘要(2015-4-17 18:36)

    本书基于Unity3.5编写,通过丰富的游戏实例,以JavaScript与C#两种语言介绍Unity开发. Unity3D游戏开发-宣雨松 序 它支持JavaScript.C#.Boo三种脚本语言 ...

  6. Unity3D游戏开发之网络游戏服务器架构设计(如何做一名主程)

    下面我们开始今天的Unity3D游戏开发技能. 初期学习目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改素材,可以独立完成2D.3D小规模游戏及网页游戏开发. 今天给大家讲一下如何做一个好 ...

  7. 【Unity3D游戏开发学习笔记】(六)上帝之手—GameObject的操作

    在Unity中,所有实体都属于游戏对象(GameObject),比如外部导入到场景中的模型,Unity自带的立方体等等,而要将这些GameOject进行管理,交互等操作,则需要用到脚本来实现,上一节我 ...

  8. Unity3D游戏开发之网络游戏服务器架构设计培训

    下面我们开始今天的Unity3D游戏开发技能培训. 我们专业培养"游戏主程",挑战20W年薪,初期学习Unity3D培训目标:让U3D初学者可以更快速的掌握U3D技术,自行制作修改 ...

  9. html5游戏开发-零基础开发RPG游戏-开源讲座(四)-游戏脚本化地图跳转

    首先,本篇文章是零基础开发RPG游戏-开源讲座系列文章的第四篇,来实现游戏的脚本化,和利用游戏脚本实现地图场景的切换,离上次更新貌似很长时间了,你在看下面的文字之前,需要先了解前三篇在下啰嗦了些什么东 ...

最新文章

  1. 统计局:居民用于交通活动的平均时间为38分钟
  2. 时间与字符串之间的转换
  3. Java事件处理机制和适配器
  4. 100道JS构造函数面试题
  5. linux 父子进程结束,Linux下让父进程结束后,子进程自动结束
  6. 如何实现轮播图的内容的多少随div的大小动态变化_小程序学习日志8:swiper滑动轮播组件(轮播图)(上)...
  7. |NOIOJ|动态规划|8462:大盗阿福
  8. 编写shell脚本实现tomcat定时重启的方法
  9. 文件备份软件 FreeFileSync
  10. dj清风试听云盘地址
  11. LANP+KEEPALIVED集群(三)
  12. 永恒骑士 小程序服务器列表空,微信小程序一键登录应用服务器通过AES解密返回purePhoneNumber为空?...
  13. 图形轨迹c语言,OpenCV识别图像上的线条轨迹
  14. 噬菌体基因组测序再添IF3.493好文
  15. 杨凌职业技术学院计算机专业宿舍,杨凌职业技术学院宿舍怎么样
  16. java 465发送邮件_465端口发送邮件失败
  17. 解决Chorme使用google搜索结果无法打开的问题
  18. OkHttp+MVP实现RecycleView显示数据
  19. Excel VBA-代码汇总
  20. LoRa 节点侧学习笔记_汇总

热门文章

  1. 意大利终于付出了代价
  2. 对刺客历史的一种颠覆:说说《最后的刺客》
  3. iOS酷我音乐导出工具使用说明和原理介绍(提供下载链接及工程源码)
  4. matlab安装程序无法启动jvm_天呀!JVM居然还有2两种运行模式
  5. plsql执行command命令控制台出现乱码_展现“管理员”的神级能力,有趣又实用的我的世界基础命令...
  6. 生产管理erp系统源码_仁和ERP企业管理系统提高生产管理流程
  7. springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析
  8. pytorch test单张图片_PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星...
  9. Ogre共享骨骼与两种骨骼驱动方法
  10. 10分钟看懂浏览器的渲染过程及优化