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