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

扫一扫,访问微社区

问答求助

关注:420

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

_____________________________________________________________________________________________________________
问答求助版块规则:

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

[脚本] 新手问一个相机转动的问题,求教

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

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
发表于 2016-12-15 20:50:29 | 显示全部楼层 |阅读模式
5蛮牛币
本帖最后由 寒宫九五 于 2016-12-15 20:52 编辑

要求的功能是:按住鼠标右键移动,相机围绕角色转动(在以角色为中心的球面上),并始终正对角色

从网上找了一段代码,实测可用。但是对其中的相机转动部分不太明白,请大神看看我错在哪里,以下是涉及旋转的代码:


void Start()
    {
        //初始化旋转角度
        mX = transform.eulerAngles.x;
        mY = transform.eulerAngles.y;
    }

    void LateUpdate()
    {
        //鼠标右键旋转
        if (Target != null && Input.GetMouseButton(1))
        {
            //获取鼠标输入
            mX += Input.GetAxis("Mouse X") * SpeedX * 0.02F;
            mY -= Input.GetAxis("Mouse Y") * SpeedY * 0.02F;
            //范围限制
            //mY = ClampAngle(mY, MinLimitY, MaxLimitY);
               transform.eulerAngles = new Vector3(mY, mX, 0);
          }   
     }


我的理解是这样:其中鼠标水平移动的累加值mX表示相机在世界坐标的Y轴上的旋转状态,鼠标竖直移动的累加值mY表示相机在世界坐标的X轴上的旋转状态。

那么问题来了,要保证实现功能,相机在竖直方向的旋转应该是绕自身坐标系的X轴才对,就像人抬头、低头都是绕自己的X轴。。。否则假如相机正对着世界坐标的X轴又沿这个轴旋转的话,怎么会产生这种“抬头”、“低头”的效果呢?

新手,可能犯了低级错误。请大神们不吝赐教。


回复

使用道具 举报

7日久生情
1945/5000
排名
483
昨日变化
2

3

主题

283

帖子

1945

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
30555
好友
0
蛮牛币
3541
威望
0
注册时间
2014-6-20
在线时间
523 小时
最后登录
2017-5-26
发表于 2016-12-16 09:15:51 | 显示全部楼层
把X,Y的旋转分开,不要一起控制.
你要同时控制两个,那就要使用两个输入了.

回复

使用道具 举报

4四处流浪
435/500
排名
6490
昨日变化
4

11

主题

165

帖子

435

积分

Rank: 4

UID
118981
好友
0
蛮牛币
703
威望
0
注册时间
2015-8-20
在线时间
113 小时
最后登录
2017-4-7
发表于 2016-12-16 09:43:02 | 显示全部楼层
我理解的脚本中就是自身角度。脚本挂载对象应该就是摄像机并且没父物体吧。

回复

使用道具 举报

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

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
 楼主| 发表于 2016-12-16 10:57:49 | 显示全部楼层
heartzwh 发表于 2016-12-16 09:15
把X,Y的旋转分开,不要一起控制.
你要同时控制两个,那就要使用两个输入了.

以上代码确实实现了,请就此分析

回复

使用道具 举报

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

11

主题

71

帖子

259

积分

Rank: 3Rank: 3Rank: 3

UID
187806
好友
0
蛮牛币
10
威望
0
注册时间
2016-11-28
在线时间
85 小时
最后登录
2017-1-25
 楼主| 发表于 2016-12-16 10:59:36 | 显示全部楼层
浪费 发表于 2016-12-16 09:43
我理解的脚本中就是自身角度。脚本挂载对象应该就是摄像机并且没父物体吧。 ...

transform.eulerAngles表示相机在世界坐标系的旋转状态

回复

使用道具 举报

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

本版积分规则

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