47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class AirPlane : MonoBehaviour
|
|
{
|
|
[Tooltip("×óÓҷתËÙ¶È")]
|
|
public float flipSpeed = 1f;
|
|
[Tooltip("×óÓҷת½Ç¶È")]
|
|
public float flipAngle = 25f;
|
|
|
|
private float beforePositionX = 0;
|
|
private float lerpEulerAnglesZ = 0;
|
|
private float targetEulerAnglesZ = 0;
|
|
private Vector3 targetEulerAngles = Vector3.zero;
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
beforePositionX = transform.position.x;
|
|
targetEulerAngles = transform.eulerAngles;
|
|
lerpEulerAnglesZ = transform.eulerAngles.z;
|
|
targetEulerAnglesZ = lerpEulerAnglesZ;
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if (transform.position.x < beforePositionX)
|
|
{
|
|
targetEulerAnglesZ = -flipAngle;
|
|
}
|
|
else
|
|
{
|
|
targetEulerAnglesZ = flipAngle;
|
|
}
|
|
beforePositionX = Mathf.Lerp(beforePositionX, transform.position.x, Time.deltaTime * flipSpeed);
|
|
if (Mathf.Abs(beforePositionX - transform.position.x) < 0.3f)
|
|
{
|
|
targetEulerAnglesZ = 0;
|
|
}
|
|
|
|
lerpEulerAnglesZ = Mathf.Lerp(lerpEulerAnglesZ, targetEulerAnglesZ, Time.deltaTime * flipSpeed);
|
|
targetEulerAngles.Set(transform.eulerAngles.x, transform.eulerAngles.y, lerpEulerAnglesZ);
|
|
transform.eulerAngles = targetEulerAngles;
|
|
}
|
|
}
|