当前位置:   article > 正文

【虚拟仿真】Unity3D中实现对大疆无人机遥控器手柄按键响应

【虚拟仿真】Unity3D中实现对大疆无人机遥控器手柄按键响应

推荐阅读

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

最近项目中需要用到大疆无人机遥控器对程序中无人机进行控制,遥控器是下图这一款:
在这里插入图片描述
博主发现接入手柄这块的可以参考的内容非常少,对于大疆遥控器的控制更是没有。

博主经过一番研究,终于理通了这块的遥控器摇杆数据的控制。

并且将解决思路分享出来,希望对大家有所帮助。

二、尝试解决思路

这一小节,先分享尝试的思路。

一是可以让同学们可以学习一下解决问题的思路,二是想让还在尝试这些方案的同学有一些参考。

下面,分享不同的解决的解决思路,心急的小伙伴可以直接跳转到第三章。

2-1、尝试使用Unity的Input Manager

尝试思路:既然遥控器也是手柄,手柄上的摇杆值应该跟Unity的Input中的摇杆值对应,遂尝试使用Input Manager。
在这里插入图片描述
刚开始当然是直接粗暴,直接用Unity自带的Input Manager,然后用Horizontal和Vertical的值来控制物体。

写了一段代码测试:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour
{
   
    private CharacterController characterController;
    public float walkspeed = 10f;//行走速度
    public float speed;
    public Vector3 moveDirction;

    private void Start()
    {
   
        characterController = GetComponent<CharacterController>();
    }

    private void Update()
    {
   
        Move();
    }

    public void Move()
    {
   
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        moveDirction = (transform.right * h + transform.forward * v).normalized;//设置玩家移动方向
        characterController.Move(moveDirction * speed * Time.deltaTime);//移动
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

运行结果:
在这里插入图片描述
问题:就我手柄都没动,但是一直在莫名其妙移动,看了一下输入的轴的值也是乱的:

在这里插入图片描述
都没动,值都是(-1,-1)。

2-2、尝试使用新版输入系统ToolKit

在这里插入图片描述
Input Manager尝试无果,所以使用了新版的输入系统XR Interaction Tookit进行控制。

在这里插入图片描述
首先,选择Window→Analysis→Input Debugger打开输入调试器
在这里插入图片描述
可以观察到手柄的输入的值,就可以设置输入管理器,来获取这些

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/590235
推荐阅读
  

闽ICP备14008679号