找回密码
 注册帐号

扫一扫,访问微社区

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

1
回复
774
查看
[ 复制链接 ]
排名
5981
昨日变化

16

主题

130

帖子

592

积分

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

UID
2999
好友
1
蛮牛币
689
威望
0
注册时间
2013-9-1
在线时间
200 小时
最后登录
2019-4-16

专栏作家

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;  
    }  
}  


回复

使用道具 举报

4四处流浪
416/500
排名
8914
昨日变化

0

主题

145

帖子

416

积分

Rank: 4

UID
223562
好友
0
蛮牛币
279
威望
0
注册时间
2017-5-24
在线时间
139 小时
最后登录
2019-3-20
2019-2-20 16:29:20 显示全部楼层
学习了学习了
回复

使用道具 举报

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

本版积分规则