Unity使用input system制作一个摇杆控制物体移动

admin3年前unity基础API1293

1:首先使用UI做个摇杆的模型 两个图片嵌套,外侧是边界,中间图片是摇杆


QQ图片20221220160858.png



2:使用inputSYSTEM创建事件




3:玩家物体上绑定脚本

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

public class PlayerController : MonoBehaviour
{
    public float speek = 5;
    MyInputAction inputActions;
    Rigidbody rg;

    private Vector2 move;
    void Awake()
    {
        inputActions = new MyInputAction();
        rg = this.GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        
        rg.velocity = new Vector3(move.x * speek, 0,move.y * speek);
    }

    private void OnEnable()
    {
        inputActions.Enable();
        inputActions.PlayerMove.move.performed += Move_performed;
        inputActions.PlayerMove.move.canceled += Move_canceled;
    }

    private void Move_canceled(UnityEngine.InputSystem.InputAction.CallbackContext obj)
    {
        move = Vector2.zero;
    }

    private void Move_performed(UnityEngine.InputSystem.InputAction.CallbackContext obj)
    {
        move = obj.ReadValue<Vector2>();
       
    }

    private void OnDisable()
    {
        inputActions.Disable();
        inputActions.PlayerMove.move.performed -= Move_performed;
    }
}



4:UI控件上也绑定相关脚本设置参数如下


QQ图片20230128173740.png


通过监听摇杆的选择变化的坐标控制物体进行跟随

相关文章

通过刚体移动的方法

1:MovePosion移动的新的位置,传入的参数是最新的位置 一般是旧的位置加上变化的参数2:velocity这个方法是瞬间给物体一个恒定的速度,将物体提升至该速度 3:addF...

Unity 读取Asset目录下物体

读取方法:AssetDatabase.LoadAssetAtPath使用方法path = "Assets/CustomizableAnimeGirl/Models/Mat...

Unity场景跳转方法

实现跳转不到的场景,需要先把场景添加到Build中首先引入命名空间using UnityEngine.SceneManagement;然后使用方法跳转 SceneManager.L...

Unity移动操作物体

if (Input.touchCount == 1)         {  ...

MoveTowards、Lerp、Slerp

1:MoveTowards MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);current:当前位置...

Unity 插值运算

在unity3d中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色之间,其函数原型如下: 1.Material.Lerp&nbs...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。