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:給物體添加一個瞬間的加速度,但是忽略其質量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM