• LeanTouch控制移动


     Lean_Touch控制移动

    using UnityEngine;

    using System.Collections;

    using System.Collections.Generic;

    using Lean.Touch;

    public class Lean_Touch: MonoBehaviour

    {

        public float speed=100;//定义速度上下

        private Rigidbody _rig;//定义移动刚体

        private Renderer _render;//定义材质渲染

        private float offsets = 0;//定义渲染变量

             //初始化

        public void Awake()

        {

               //得到组件

          _rig = GetComponent<Rigidbody>();

            _render = GetComponent<Renderer>();

          }

             //开启启动

        protected virtual void OnEnable()

        {

                 //监听加事件

            LeanTouch.OnGesture += OnGesture;

        }

             //关闭禁用

        protected virtual void OnDisable()

        {

                 //监听去事件

            LeanTouch.OnGesture -= OnGesture;

        }

             //List<LeanFinger> fingers参数的方法

        public void OnGesture(List<LeanFinger> fingers)

        {

                  //判断上划

             if (LeanGesture.GetScaledDelta(fingers).x > 0 )

            {

                             //材质球偏移量

                offsets += 0.1f;

                _render.material.mainTextureOffset = new Vector2(offsets, 0);

                          //给物体x加力

                _rig.AddForce(new Vector3(speed, 0, 0), ForceMode.Force);

            }

                      //判断下划

            if (LeanGesture.GetScaledDelta(fingers).x < 0 )

            {

                          //材质球偏移量

                offsets -= 0.1f;

                _render.material.mainTextureOffset = new Vector2(offsets, 0);

                          //给物体x加反向力

                _rig.AddForce(new Vector3(-speed, 0, 0), ForceMode.Force);

            }

                      //判断左划

            if (LeanGesture.GetScaledDelta(fingers).y > 0 )

            {

                          //给物体x加反向力

                _rig.AddForce(new Vector3(0, 0, speed), ForceMode.Force);

            }

                      //判断右划

            if (LeanGesture.GetScaledDelta(fingers).y < 0 )

            {

                          //给物体x加反向力

                _rig.AddForce(new Vector3(0, 0, -speed), ForceMode.Force);

            }

                      //根据滑动方向给物体选择面朝方向

            Vector3 movePosition = new Vector3(LeanGesture.GetScaledDelta(fingers).x, 0, LeanGesture.GetScaledDelta(fingers).y);

            Vector3 dir = transform.position + movePosition;

            transform.LookAt(dir);

            }

     }

    注:此移动方式是在LeanTouch插件下进行的移动旋转、移动加力方式根据需要调节、ForceMode.Force:给物体添加一个持续的力并使用其质量、ForceMode.Acceleration:给物体添加一个持续的加速度,但是忽略其质量、 ForceMode.Impulse:给物体添加一个瞬间的力并使用其质量、ForceMode.VelocityChange:给物体添加一个瞬间的加速度,但是忽略其质量。

    支持个人观看使用,如商用或转载,请告知! -----萧朗(QQ:453929789 Email:xiaolang_xl@sina.com)
  • 相关阅读:
    C#UDP编程总结
    C# TcpListener的编程要点
    三维地图添加切片“lods of null”报错
    三维地图添加切片图层坐标系报错
    03 三维地图添加切片图层
    从ArcMap 10.6.1发布服务到Portal,服务器地址错误
    19 React——Ant Design(按需加载样式文件)
    20 React项目生成及部署
    18 React——Ant Design的使用
    17 React——路由的模块化及嵌套
  • 原文地址:https://www.cnblogs.com/XiaoLang0/p/9590288.html
Copyright © 2020-2023  润新知