u3d 跟着大脚人物下面的血条的血条怎么不旋转

扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
_____________________________________________________________________________________________________________
问答求助版块规则:
  1、问题尽量描述清楚
& && &2、代码要放在代码块里
& && &3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
& && &4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
& && &5、问题得到解决,请选择最佳答案。
& && &6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 613|回复: 4
人物旋转后,人物移动方向不对了
本帖为抢楼帖,欢迎抢楼!&
5557/1000排名<font color="#FF昨日变化主题帖子积分
熟悉之中, 积分 557, 距离下一级还需 443 积分
熟悉之中, 积分 557, 距离下一级还需 443 积分
蛮牛币1471
在线时间138 小时
最近在人物行走的模拟。已知人物每一时间的位置,我构造出每个时间段人物行走的方向 paths[j].然后通过下面语句实现行走:
persons.transform.Translate(paths[j - 1] * Time.deltaTime);
走完这一小段后我对其进行旋转:
persons.transform.Rotate(new Vector3(0,10,0));
:为什么我不进行旋转,得到的行走路线是正确的,每一小段进行旋转后就不对了????很困惑,希望各位能够解答,或者指出问题。谢谢!!
全部FixedUpdate代码:
void FixedUpdate(){
if (j & 50)
& && && && &if (t & 100 * j)
& && && && &{
& && && && && && &&&persons[i].transform.Translate(paths[j - 1] * 0.01f);
& && && && && && && &t++;
& && && && && & if (t % 100 == 0)
& && && && && & {
& && && && && && &&&j++;
& && && && && && &&&persons.transform.Rotate(new Vector3(0,10,0));
& && && && && & }
& && && &}
每日推荐:
61386/1500排名<font color="#FF昨日变化主题帖子积分
蛮牛粉丝, 积分 1386, 距离下一级还需 114 积分
蛮牛粉丝, 积分 1386, 距离下一级还需 114 积分
蛮牛币2624
在线时间441 小时
function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void
默认是以自身为坐标轴进行移动的
而Transform.rotation
是以世界坐标为准旋转的。
我想,可能你旋转之后自身坐标轴改变了,所以之后用 Translate函数就和之前的不一样。改正方法可能是:transform.Translate(XXX, Space.World);
[]: 一个袋子砸在了 jacketjlz 头上,jacketjlz 赚了 1
每日推荐:
143/50排名<font color="#FF昨日变化79主题帖子积分
注册看看, 积分 43, 距离下一级还需 7 积分
注册看看, 积分 43, 距离下一级还需 7 积分
在线时间18 小时
需要将自身坐标转化为世界坐标
persons[i].transform.Translate( transform.TransformDirection(paths[j - 1] * 0.01f));
每日推荐:
5557/1000排名<font color="#FF昨日变化主题帖子积分
熟悉之中, 积分 557, 距离下一级还需 443 积分
熟悉之中, 积分 557, 距离下一级还需 443 积分
蛮牛币1471
在线时间138 小时
需要将自身坐标转化为世界坐标
persons.transform.Translate( transform.TransformDirection(paths[j - 1] ...
谢谢你的解答,不过试了一下还是不行,可能还是没看透。楼下的那位的方法可行,加上World.Space或者null。
每日推荐:
5557/1000排名<font color="#FF昨日变化主题帖子积分
熟悉之中, 积分 557, 距离下一级还需 443 积分
熟悉之中, 积分 557, 距离下一级还需 443 积分
蛮牛币1471
在线时间138 小时
function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void
默认是以自身为坐 ...
谢谢你的解答,应该就是这个问题。
[]: 一个袋子砸在了 linzy_1990 头上,linzy_1990 赚了 1
每日推荐:7362人阅读
具体场景布置请参考上一篇博文http://blog.csdn.net/u/article/details/
现在我们讲第二种,相比第一种也很简单
大概原理是:把Player的世界坐标转为屏幕坐标,血条坐标就等于Player的屏幕坐标加上Player中心点到头顶的差&#20540;
首先创建Canvas(注意这里的Canvas不要作为Player的子物体)并创建Slider,并且把slider下面的Background和Handle Slide Area删除掉或者禁用掉。大概布局就是这样!
具体血条制作也跟上篇相&#20284;,这里不多讲。效果如图
在Player身上加一个Follow脚本,在Player身上加脚本而不在slider身上加脚本的原因是我想让血条超出屏幕就关闭显示,这样对优化有好处
脚本也很简单,几行代码就能实现一个很炫酷的功能:
public float xO
public float yO
public RectTransform recT
void Update ()
Vector2 player2DPosition = Camera.main.WorldToScreenPoint(transform.position);
recTransform.position = player2DPosition + new Vector2(xOffset, yOffset);
//血条超出屏幕就不显示
if (player2DPosition.x & Screen.width || player2DPosition.x & 0 || player2DPosition.y & Screen.height || player2DPosition.y & 0)
recTransform.gameObject.SetActive(false);
recTransform.gameObject.SetActive(true);
点击运行就能看到血条已经在头顶显示了,并且如果角色不在屏幕内,血条会自动关闭。
是不是很带感!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:46128次
排名:千里之外
原创:16篇
(2)(1)(2)(2)(3)(2)(4)Unity3D快速入门
第1章 课程简介
第2章 游戏入门及Unity基础
第3章 角色控制
第4章 角色互动
第6章 课程总结
你发的评论可能会是问题?是否将他发到问答中
第四章课堂演示代码
Copyright (C)
All Rights Reserved | 京ICP备 号-2
本次提问将花费2个积分
你的积分不足,无法发表
本次提问将花费2个积分
继续发表请点击 "确定"}

我要回帖

更多关于 eui人物下面的血条 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信