开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:489

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 338|回复: 4

[脚本] 萌新又来提问了。用自己的代码替换官方的代码后

[复制链接]  [移动端链接]
3偶尔光临
259/300
排名
9323
昨日变化
4

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
发表于 2017-1-8 01:35:18 | 显示全部楼层 |阅读模式
50蛮牛币
出自《官方案例精讲》,这里的功能是计算角色当前的速度和目标速度间的角度差,作为控制转向的动画参数angle。最终实现的功能是:点击地面某点,角色就跑向该点。原代码:

Vector3 velocity = Quaternion.Inverse(Transform.rotation)*agent.desiredVelocity;
float angle = Mathf.Atan2(velocity.x,velocity.z)*Mathf.Rad2Deg;




我给换成了以下两种版本,虽然角色跑到了目标点,但是都出现一点问题
1.         float angle = Vector3.Angle(transform.forward, agent.desiredVelocity);
            angle *= Mathf.Sign(Vector3.Cross(transform.forward, agent.desiredVelocity).y);


            print(angle);
这种情况下无论点什么地方,角色都会先有一个向右转90度的初始目标转向并且真的向右转一个大的角度,然后才会把目标转向设定为真正的目标点。
也就是print(angle) 在第一帧打印的值总是90度,这是怎么回事?


2.         float angle = Vector3.Angle(agent.velocity, agent.desiredVelocity);
            angle *= Mathf.Sign(Vector3.Cross(agent.velocity, agent.desiredVelocity).y);
            print(angle);
这种情况下跟第一种类似,但是print(angle)在前两帧打印的都是90度,并且角色跑动过程中屏幕出现抖动,这又是怎么回事?


有没有大神。。。


回复

使用道具 举报

5熟悉之中
564/1000
排名
5006
昨日变化
7

15

主题

130

帖子

564

积分

Rank: 5Rank: 5

UID
148479
好友
1
蛮牛币
709
威望
0
注册时间
2016-5-13
在线时间
195 小时
最后登录
2017-12-11
发表于 2017-1-10 14:43:32 | 显示全部楼层
调试看看,第一帧时angle的两个向量,和后续的angle两个向量的值。

回复

使用道具 举报

3偶尔光临
259/300
排名
9323
昨日变化
4

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
 楼主| 发表于 2017-1-11 21:47:35 | 显示全部楼层
本帖最后由 寒宫九五 于 2017-1-11 21:50 编辑
ZoneWu 发表于 2017-1-10 14:43
调试看看,第一帧时angle的两个向量,和后续的angle两个向量的值。

大神,我截了全过程的图,你也许可以看看?

这里表明一开始的目标是右侧90度,从第二帧开始(-15度)目标角度都是正确的,只不过角色先往右转,然后才往左转,所以产生了后续的数据
更多图片 小图 大图
组图打开中,请稍候......

回复

使用道具 举报

3偶尔光临
259/300
排名
9323
昨日变化
4

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
 楼主| 发表于 2017-1-11 21:52:47 | 显示全部楼层
第一种情况的截图在3楼,求行家给看看!

回复

使用道具 举报

3偶尔光临
259/300
排名
9323
昨日变化
4

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
 楼主| 发表于 2017-1-25 09:19:21 | 显示全部楼层
我可以把这个帖子顶起来么?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表