超牛链AI Logo

超牛链博客: 读书|骑行|笔记分享
user
老王不响
@关于博主
2014-12-15

C#程序员整理的Unity 3D笔记(五):Unity3D朝向浅析 3 mins read


1. LookAt(gameObject)用法:

假定一个人物模型,使用LookAt方法使其朝向某个目标,但是在使用时会发现很多很二的地方,你会发现,有的人是背朝着目标,有的是面朝向目标,有的甚至都是倒立的朝向目标,所以能否正确的使用该方法,还是有很多的地方需要了解。

LookAt函数的定义如下

void LookAt(Transform target,Vector3 worldUp = Vector3.up);

target    :Object to point towards

worldUp:Vector specifying the upward direction.

根据官方的文档描述,该函数的功能是,旋转自身,使得当前对象的正z轴指向目标对象target所在的位置。

而对于worldUp的描述是,在完成上面的旋转之后,继续旋转自身,使得当前对象的正y轴朝向与worldUp所指向的朝向一致。

所以一定要弄好物体的朝向轴,也就是物体的Z轴一定要是物体的正反向,就比如说人,Z轴一定要让是人的面朝方向,不然会有很多问题

如果以上方法还是不能解决,可以试一个极端的方法,基本可以解决:

m_transform.right=Vector3.Cross(mainGame.transform.position,Vector3.up);

旋转朝向某个gameobj 使用Quaternion.LookRotation(rpos) rpos为两个向量相减得出

 

2. 鼠标控制物体的移动

现在的很多 鼠标控制物体移动的游戏都是上帝视图来开发的,即某一个轴的向量为0。如一般的RPG游戏,dota等,都是鼠标控制英雄的移动方向, 由于鼠标点击获取的是一个Vector3的Z方向为0,所以要把获取的这个Vector3向量放到三维游戏中,一般都是需要将获取的向量投影到物体移动面上,一般使用的方法都是射线,代码如下:

Vector3 mousedir = Input.mousePosition;

RaycastHit hit;

Ray ray = Camera.main.ScreenPointToRay(mousedir);

if (Physics.Raycast(ray, out hit, 1000, musk))

{

enddir = hit.point;

}

m_transform.position = Vector3.MoveTowards(m_transform.position, enddir, speed * Time.deltaTime);

其中musk为所要投影的面,1000为距离。

至于3维环境中鼠标控制物体移动,现在还没有想到好的办法解决,欢迎大家提出宝贵想法。

Unity中的组件上的类,是不能new的,必须通过组件去获取,new出来的东西是null。

2014-12-15
老王 加冕为王
老王,工作了19年的软件工程师、连续创业者、Blogger(since 2013),微软.net MVP获得者(2015~2016)、 Unity3D UVP获得者 (2017)。 曾任上市公司研发主管、知名外企Social Media Marketing 。 现专注于Instagram、SEO等海外社交媒体营销技术研究与实践。 四十而立的我,有2个可爱的宝宝,喜好骑行、读书、木工, 尤其喜好历史、科幻书籍。
友情链接
超牛链 57天前 2024年3月6日 15:16

占领沙发,等待老朋友的精彩发挥

最新文章

超牛链AI:Ollama本地LLM LangChain RAG小试--算力为王

算力为王时代: CPU --> GPU

GPU这...
【发刊词】超牛链AI: hello world.

​公元2024年,比2023年的AI风暴,更加寒噤。

《一句顶一万句》 遇见一个能说的上话的人不易

2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...

2023个人总结: AI、骑行、青椒炒肉丝

后疫情时代,刚褪去口罩。又迎来经济消费降级,我的客户同...

热门文章

C#程序员整理的Unity 3D笔记(六):Git源码管理

对程序员而言,写的代码用源码管理系统管理起来,非常方便...

且行且思:记录一次西安城墙国际马拉松---8公里

百度搜索,输入西安城墙马拉松,有7万2千个结果。 实际...

骑行故事初心--自由的御风而行

2023年,三年疫情过后第一个春天,我开始了骑行: 空...

Unity3D for VR 学习(7): 360°全景照片

    在VR应用中,有一个相对简单的虚拟现实体验,那...

相关【技术杂谈】文章

查看所有相关【技术杂谈】文章
搭建Squid3 密码账号IP代理

上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...

不用插件,js脚本显示星号密码

不用插件,js脚本显示星号密码

以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...

执行MySQL报错

今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...