游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2353

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 161|回复: 0

[Jeremy] 【Unity3D自学记录】 Unity方向盘功能

[复制链接]  [移动端链接]
排名
6182
昨日变化
4

15

主题

117

帖子

540

积分

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

UID
2999
好友
1
蛮牛币
145
威望
0
注册时间
2013-9-1
在线时间
186 小时
最后登录
2018-11-12

专栏作家社区QQ达人

发表于 2018-10-31 10:13:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x

[AppleScript] 纯文本查看 复制代码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour{
    public Canvas CanvasObj;//Canvas物体
    public RectTransform SteeringWheelObj;//方向盘物体
    private bool isFirstClick = true;//判断第一次按下
    private Vector3 NowPos;          //记录当前位置  
    private bool isClockwise;        //判断顺时针  
    private float RoundSum = 0;      //旋转总和
    void Update(){  
        if (Input.GetMouseButton(0)){  
            Vector2 pos1;

            //获取鼠标点击位置 
            if (RectTransformUtility.ScreenPointToLocalPointInRectangle(CanvasObj.transform as RectTransform, Input.mousePosition, CanvasObj.worldCamera, out pos1))
            {
                pos1.x = pos1.x - SteeringWheelObj.position.x;
                pos1.y = pos1.y - SteeringWheelObj.position.y;
                Vector3 CenterPos = new Vector3(pos1.x, pos1.y, 0);
                //判断第一次按下并记录
                if (isFirstClick){
                    NowPos = CenterPos;  
                    isFirstClick = false;  
                }
                //记录位置判断方向
                Vector3 movePos = Vector3.Cross(CenterPos, NowPos);
                //判断顺时针与逆时针
                if (movePos.z > 0) isClockwise = true;
                else if (movePos.z < 0) isClockwise = false;

                if (NowPos != CenterPos){  
                    if(isClockwise){  
                        if (RoundSum <= 540){//限制旋转角度总和
                            RoundSum += Vector3.Angle(NowPos, CenterPos);
                            transform.Rotate(new Vector3(0, 0, -Vector3.Angle(NowPos, CenterPos)));  
                        }  
                    }else{  
                        if (RoundSum >= -540){//限制旋转角度总和
                            RoundSum -= Vector3.Angle(NowPos, CenterPos);
                            transform.Rotate(new Vector3(0, 0, Vector3.Angle(NowPos, CenterPos)));  
                        }  
                    }  
                }
                NowPos = CenterPos;  
            }  
        }  
        if (Input.GetMouseButtonUp(0)) isFirstClick = true;  
    }  
}  



回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

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