12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 4122|回复: 11
打印 上一主题 下一主题

Unity3D RTS Camera

[复制链接]

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

跳转到指定楼层
楼主
发表于 2011-11-16 17:26:00 |只看该作者 |倒序浏览



            
           

            
           

            var cameraMoveSpeed: float;     // скорость передвижения камеры
           

            var cameraRotateSpeed: float;   // скорость поворота камеры
           

            var cameraScrollSpeed: float;   // скорость перемещения камеры
           

            
           

            var minYPos: float;
           

            var maxYPos: float;           // минимальная и максимальная высота камеры над землей
           

            
           

            private var newPos: Vector3;            // новая позиция камеры
           

            private var yRot:   float = 0;      // поворот по оси y
           

            
           

            function LateUpdate () {
           

                    if (!(Input.GetButton("Turn Camera"))) {  // зажата ли клавиша перемещения
           

                            //код перемещения
           

                            newPos = Vector3.zero;
           

                  
           

                  
           

                            // проверим, подвел ли юзер курсор мыши к краю экрана
           

                            if (Input.mousePosition.x <= 5) {
           

                                    newPos = Vector3(transform.position.x - 20, 0, 0);
           

                                    transform.Translate(newPos * cameraMoveSpeed);
           

                            }
           

                  
           

                            if (Input.mousePosition.y <= 5) {
           

                                    newPos = Vector3(0, 0, transform.position.z - 3);
           

                                    transform.Translate(-newPos * cameraMoveSpeed);
           

                            }
           

                  
           

                            if (Input.mousePosition.x >= (Screen.width - 5) ) {
           

                                    newPos = Vector3(transform.position.x + 20, 0, 0);
           

                                    transform.Translate(newPos * cameraMoveSpeed);
           

                            }
           

                  
           

                            if (Input.mousePosition.y >= (Screen.height - 5)) {
           

                                    newPos = Vector3(0, 0, transform.position.z + 3);
           

                                    transform.Translate(newPos * cameraMoveSpeed);
           

                            }
           

                    }
           

                  
           

                else {
           

               
           

                    yRot -= Input.GetAxis("Mouse X") * cameraRotateSpeed * -0.02;
           

                                   
           

                    var rotation = Quaternion.Euler(0, yRot, 0);
           

                  
           

                    transform.rotation = rotation;
           

                }
           

               
           

                var mouseWheel: float = Input.GetAxis("Mouse ScrollWheel");  
           

                    // проверим нижнюю точку под камерой
           

                    var hit : RaycastHit;
           

                    var distanceToGround: float;
           

                     
           

                            if (Physics.Raycast (transform.position, -Vector3.up, hit,      transform.position.y * 2)) { // посылаем рэйкаст вниз
           

                            distanceToGround = hit.distance;
           

                        }
           

                  
           

                    var currentHeight: float;
           

                    currentHeight = transform.position.y;
           

                  
           

                    var minY = minYPos + (currentHeight - distanceToGround);   //исходя из данных RaycastHit, рассчитывает минимальную высоту камеры
           

                  
           

                    // изменить высоту камеры основываясь на заданной скорости
           

                    currentHeight -= mouseWheel * cameraScrollSpeed * Time.deltaTime;
           

                  
           

                    // проверим позицию на переход допустимых значений
           

                    if (currentHeight < minY)
           

                            currentHeight = minY;
           

                    if (currentHeight > maxYPos)  
           

                            currentHeight = maxYPos;
           

                           
           

                    transform.position = new Vector3(transform.position.x, currentHeight, transform.position.z);
           

                  
           

            }
           

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-3-3 23:19:31 |只看该作者
此地無銀。。。
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-4-3 23:29:26 |只看该作者
很有心,部分已收录自用,谢谢
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-4-10 23:29:30 |只看该作者
这么后现代
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-5-14 23:18:55 |只看该作者
真是不错啊
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

6#
发表于 2012-5-30 23:26:42 |只看该作者
好`我顶``顶顶
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-6-20 23:20:14 |只看该作者
我是老实人,我来也!
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-6-27 23:26:16 |只看该作者
不错哦,谢谢楼主
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2012-7-14 23:27:38 |只看该作者
佩服,好多阿 ,哈哈
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2012-8-11 00:08:09 |只看该作者
都闪开,介个帖子,偶来顶
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-9-23 11:14 , Processed in 0.210289 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部