Unity中摇杆控制物体移动和旋转

 方法一 : 在Update中调用摇杆移动方法

  // 范围圈
    [HideInInspector]
    public Image scopeImag;
    // 移动圈
    [HideInInspector]
    public Image moveImag;
   // 获取范围圈和移动的差值
    [HideInInspector]
    public Vector3 offset;
    void Start () {
        // 查找范围圈
        scopeImag = GameObject.Find("Canvas/ScopeImage").GetComponent<Image>();
        // 查找移动圈
        moveImag = GameObject.Find("Canvas/ScopeImage/MoveImage").GetComponent<Image>();
	}
	
	
	void Update () {
        // 摇杆移动方法
        RockerMove();


        // 旋转注视
        Quaternion qua = Quaternion.LookRotation(new Vector3(offset.normalized.x, 0, offset.normalized.y));
        // 人物旋转
        transform.rotation = qua;
        // 人物移动
        transform.Translate(new Vector3(offset.normalized.x,0,offset.normalized.y) * Time.deltaTime * 5,Space.World);
      
	}


    /// <summary>
    /// 摇杆移动物体
    /// </summary>
    public void RockerMove() {

        // 开启摇杆移动物体协程
        StartCoroutine(IeRockerMove());
    
    }

    // 限制移动的范围
    public int restrict;
    /// <summary>
    /// 摇杆移动物体协程
    /// </summary>
    /// <returns></returns>
    IEnumerator IeRockerMove() {


        while (Input.GetMouseButton(0))
        {
            // 获取范围圈和移动的差值
             offset = Input.mousePosition - scopeImag.transform.position;
            // 判断差值是否大于限制范围
            if (offset.magnitude > restrict)
            {

                // 差值大于限制范围,把差值归一化
                offset = offset.normalized * restrict;

            }

            // 给移动圈赋值  = 范围圈的位置 + 差值
            moveImag.transform.position = scopeImag.transform.position + offset;

            yield return 0;
        }

        // 移动圈复位 = 范围圈的中心
        moveImag.transform.position = scopeImag.transform.position;
        //  把差值归0,防止移动圈回归范围圈中心点时,物体还在一直移动
        offset = Vector3.zero;

    }

  方法二:

            1.在UI上面添加Event Trigger组件,添加Event Trigger的点击事件

             2.场景中必须要有Event System 和Standlone Input Module组件

            3.UI上添加Event Trigger组件,场景中要有Event System 和Standlone Input Module组件.三个缺一不可

          

            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值