You've already forked taptap2024_GJ_chidouren
init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using Framework.Utils.Extend;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Game.Component
|
||||
{
|
||||
public class GyroscopeEulerController : MonoBehaviour
|
||||
{
|
||||
|
||||
[SerializeField] private Vector3 _minGravity;
|
||||
[SerializeField] private Vector3 _maxGravity;
|
||||
[SerializeField] private float _offset;
|
||||
|
||||
private Vector3 _curGravity;
|
||||
private Vector3 _baseRotation;
|
||||
private Vector3 _baseGravity;
|
||||
|
||||
void OnEnable ()
|
||||
{
|
||||
this._baseRotation = this.transform.localEulerAngles;
|
||||
this._baseGravity = GyroscopeMgr.Instance.Gyroscope.gravity;
|
||||
GyroscopeMgr.Instance.AddUpdater (DoUpdate);
|
||||
}
|
||||
|
||||
void DoUpdate (Vector3 gravity)
|
||||
{
|
||||
var gyroGravity = gravity - this._baseGravity;
|
||||
this._curGravity
|
||||
= Vector3.Slerp (this._curGravity , (gyroGravity * this._offset).Clamp (this._minGravity , this._maxGravity) , 0.25f);
|
||||
this.transform.localEulerAngles = this._baseRotation + new Vector3 (this._curGravity.y , -this._curGravity.x , 0);
|
||||
}
|
||||
|
||||
private void OnDisable ()
|
||||
{
|
||||
GyroscopeMgr.Instance.RemoveUpdater (DoUpdate);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user