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

扫一扫,访问微社区

问答求助

关注:483

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

_____________________________________________________________________________________________________________
问答求助版块规则:

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

[脚本] 控制摄像机移动,和旋转,z轴会变

[复制链接]  [移动端链接]
4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
发表于 2017-11-10 16:29:16 | 显示全部楼层 |阅读模式
10蛮牛币
写了个脚本,控制摄像机的移动和旋转,但是旋转的时候z轴会变,怎么样让z轴不变,
[AppleScript] 纯文本查看 复制代码
 //控制移动
        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(Vector3.left * speed * Time.deltaTime, Space.Self);
        }
        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(-Vector3.left * speed * Time.deltaTime, Space.Self);
        }
        if (Input.GetKey(KeyCode.W))
        {
            transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.Self);
        }
        if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(-Vector3.forward * speed * Time.deltaTime, Space.Self);
        }
        if (Input.GetKey(KeyCode.Q))
        {
            transform.Rotate(Vector3.up, rotateSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.E))
        {
            transform.Rotate(-Vector3.up, rotateSpeed * Time.deltaTime);          
         }


        //鼠标控制左右旋转
        if (Input.GetMouseButton(0)||Input.GetMouseButton(1)||Input.GetMouseButton(2))
        {
            mx = Input.GetAxis("Mouse X");
            my = Input.GetAxis("Mouse Y");
 transform.Rotate(my, mx, 0, Space.Self);


还有就是当旋转后再移动摄像机,摄像机在往前方移动的时候z轴会发生变化,怎么控制z轴不让其变化


回复

使用道具 举报

5熟悉之中
806/1000
排名
6004
昨日变化
4

17

主题

416

帖子

806

积分

Rank: 5Rank: 5

UID
195974
好友
1
蛮牛币
939
威望
0
注册时间
2016-12-24
在线时间
205 小时
最后登录
2017-11-18
发表于 2017-11-10 16:29:17 | 显示全部楼层
fengjing 发表于 2017-11-13 10:01
[mw_shl_code=applescript,true]
            if (Mathf.Abs(mx) > Mathf.Abs(my))
            {

        private float sensitivityX = 10;
        private float sensitivityY = 10;
        private float minimumY = -45;
        private float maximumY = 45;
        private float rotationY = 0;
//上面的放在update外面,下面的if语句放在updata里面
        if (Input.GetMouseButton(0) || Input.GetMouseButton(1) || Input.GetMouseButton(2))
        {
            private float rotationX = Camera.main.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
    rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
            rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);

            Camera.main.transform.localEulerAngles = private newVector3(-rotationY, rotationX, 0);
        }

回复

使用道具 举报

6蛮牛粉丝
1026/1500
排名
3658
昨日变化
16

14

主题

320

帖子

1026

积分

Rank: 6Rank: 6Rank: 6

UID
218268
好友
4
蛮牛币
1113
威望
0
注册时间
2017-4-18
在线时间
370 小时
最后登录
2017-11-19

迈向小康

发表于 2017-11-10 16:37:05 | 显示全部楼层
记录Z初始值,时刻赋值也行吧

回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-10 17:15:12 | 显示全部楼层
独落伊人春 发表于 2017-11-10 16:37
记录Z初始值,时刻赋值也行吧

这样感觉有些麻烦,我觉的是不是我的方法有误

回复

使用道具 举报

7日久生情
1666/5000
排名
1893
昨日变化

11

主题

370

帖子

1666

积分

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

UID
148830
好友
3
蛮牛币
2555
威望
0
注册时间
2016-5-17
在线时间
689 小时
最后登录
2017-11-10
发表于 2017-11-10 17:32:24 | 显示全部楼层
Space.Self改成Space.World试试
[发帖际遇]: 一个袋子砸在了 弱智的小毛驴 头上,弱智的小毛驴 赚了 1 蛮牛币. 幸运榜 / 衰神榜

我一个人走走停停冷暖自知自始自终自给
回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-10 17:39:13 | 显示全部楼层
弱智的小毛驴 发表于 2017-11-10 17:32
Space.Self改成Space.World试试

改过了,一样
[发帖际遇]: 一个袋子砸在了 fengjing 头上,fengjing 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
18339
昨日变化
750

0

主题

8

帖子

58

积分

Rank: 2Rank: 2

UID
230179
好友
0
蛮牛币
55
威望
0
注册时间
2017-7-31
在线时间
30 小时
最后登录
2017-11-19
发表于 2017-11-10 18:45:58 | 显示全部楼层
不太懂楼主意思,不过unity中物体的前方就是z轴方向啊,向前走z轴当然会变了

回复

使用道具 举报

5熟悉之中
806/1000
排名
6004
昨日变化
4

17

主题

416

帖子

806

积分

Rank: 5Rank: 5

UID
195974
好友
1
蛮牛币
939
威望
0
注册时间
2016-12-24
在线时间
205 小时
最后登录
2017-11-18
发表于 2017-11-10 19:39:23 | 显示全部楼层
楼主指的Z轴变化是什么效果?

回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-11 09:59:40 | 显示全部楼层
江倚岚 发表于 2017-11-10 18:45
不太懂楼主意思,不过unity中物体的前方就是z轴方向啊,向前走z轴当然会变了 ...

说错了,应该是Y轴

回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-11 10:06:31 | 显示全部楼层
xiaohunyidao 发表于 2017-11-10 19:39
楼主指的Z轴变化是什么效果?

是Y轴,说错了

回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-11 11:58:11 | 显示全部楼层
弱智的小毛驴 发表于 2017-11-10 17:32
Space.Self改成Space.World试试

self改为world,移动没有问题了,但是旋转还是不行

回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-11 11:59:18 | 显示全部楼层
xiaohunyidao 发表于 2017-11-10 19:39
楼主指的Z轴变化是什么效果?

就是用鼠标拖动场景时,只想场景绕x轴或y轴旋转,不想z轴动

回复

使用道具 举报

5熟悉之中
584/1000
排名
4736
昨日变化
1

7

主题

62

帖子

584

积分

Rank: 5Rank: 5

UID
217346
好友
0
蛮牛币
648
威望
0
注册时间
2017-4-12
在线时间
281 小时
最后登录
2017-11-18
发表于 2017-11-11 15:15:10 | 显示全部楼层
这个好像和欧拉角有关,你要的旋转结果并不会和你想的那么简单的转过去,要经过xyz轴的一系列组合旋转,在这个过程中会影响到z轴(记不太清了),实在不行只能前置限制Z轴的初始值不变了

回复

使用道具 举报

4四处流浪
411/500
排名
7344
昨日变化
3

12

主题

152

帖子

411

积分

Rank: 4

UID
219600
好友
0
蛮牛币
269
威望
0
注册时间
2017-4-27
在线时间
115 小时
最后登录
2017-11-18
 楼主| 发表于 2017-11-11 16:57:41 | 显示全部楼层
ZXWhappy 发表于 2017-11-11 15:15
这个好像和欧拉角有关,你要的旋转结果并不会和你想的那么简单的转过去,要经过xyz轴的一系列组合旋转,在 ...

那要怎么限制呢,是不是要加刚体

回复

使用道具 举报

5熟悉之中
806/1000
排名
6004
昨日变化
4

17

主题

416

帖子

806

积分

Rank: 5Rank: 5

UID
195974
好友
1
蛮牛币
939
威望
0
注册时间
2016-12-24
在线时间
205 小时
最后登录
2017-11-18
发表于 2017-11-11 18:28:28 | 显示全部楼层
fengjing 发表于 2017-11-11 11:59
就是用鼠标拖动场景时,只想场景绕x轴或y轴旋转,不想z轴动

不是,我用你的代码试了一下,发现是你鼠标拖动控制旋转那里的问题,下周一再说

回复

使用道具 举报

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

本版积分规则

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