using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAnimation : MonoBehaviour {
///
/// キャラクターのアニメーション
///
//コンポーネント
CharacterAnimation _charaanime;
//アニメーションのためのフレーム
private int flame;
//シュートフレーム シュートするタイミング
public int shootf = 60;
//フレームを加算する判定
private bool addflame = false;
//シュートアニメーション中かどうかの判定
public bool shootanm = false;
//シュートアニメーションのジャンプを始めるかの判定
public bool jstartf = false;
//シュートアニメーション用のフレーム
public float jampf;
//シュートアニメーション用のジャンプ力
public float jamp = 1f;
//シュートアニメーション用のフレームパーセント
public float fper;
//シュートアニメーション用のキャラクターの初期Y座標
public float posy;
// Use this for initialization
void Start () {
_charaanime = GetComponent();
flame = 0;
jampf = 0f;
//6/14 アニメーションで調整した結果の最適値
shootf = 40;
jamp = 0.1f;
fper = 60f;
posy = transform.position.y;
}
public void jumpJudge()
{
float jampstart = 15f; //ジャンプするタイミング
//フレームを加算させるかをaddflameで判定する
if (addflame)
{
flame++;
//ボールを手の位置に合わせさせる
GetComponent().ballPosAlignment();
}
if (flame >= jampstart)
{
jstartf = true;
}
//フレームがシュートするタイミングになったとき
if (flame >= shootf)
{
GetComponent().setShootOK(true);
//カメラの追従を止めるため
GameObject.Find("Manager").GetComponent().ballChara = null;
GameObject.Find("Main Camera").gameObject.GetComponent().charBall = null;
//加算を止める
addflame = false;
flame = 0; //初期化
}
//シュートアニメーション時
if (jstartf && shootanm && transform.position.y >= posy)
{
float y; //Y座標の加算値格納用
float t; //時間
t = jampf / fper;
jampf++;
y = Mathf.Sqrt(2f * 9.8f * jamp) * t - 0.5f * 9.8f * t * t;
//float型の計算で非数値になる場合があるので、その非数値を入れないためIsNaN()を使う
if (!float.IsNaN(y))
{
transform.position = new Vector3(transform.position.x, transform.position.y + y, transform.position.z);
}
}
else if (!shootanm && jampf > 0f)
{
jampf = 0f;
}
//シュートアニメーションのジャンプで落ちすぎないように
if (transform.position.y < posy && jampf > 0f)
{
transform.position = new Vector3(transform.position.x, posy, transform.position.z);
//----------------------------------------------------------
shootanm = false;
jstartf = false;
//----------------------------------------------------------
}
}
public void jumpJudge(float plussJump)
{
float jampstart = 15f; //ジャンプするタイミング
//フレームを加算させるかをaddflameで判定する
if (addflame)
{
flame++;
//ボールを手の位置に合わせさせる
GetComponent().ballPosAlignment();
}
if (flame >= jampstart)
{
jstartf = true;
}
//フレームがシュートするタイミングになったとき
if (flame >= shootf)
{
//カメラの追従を止めるため
GameObject.Find("Manager").GetComponent().ballChara = null;
GameObject.Find("Main Camera").gameObject.GetComponent().charBall = null;
//加算を止める
addflame = false;
flame = 0; //初期化
}
//シュートアニメーション時
if (jstartf && shootanm && transform.position.y >= posy)
{
float y; //Y座標の加算値格納用
float t; //時間
t = jampf / fper;
jampf++;
y = Mathf.Sqrt(2f * 9.8f * jamp) * t - 0.5f * 9.8f * t * t;
//float型の計算で非数値になる場合があるので、その非数値を入れないためIsNaN()を使う
if (!float.IsNaN(y))
{
transform.position = new Vector3(transform.position.x, transform.position.y + y, transform.position.z);
}
}
else if (!shootanm && jampf > 0f)
{
jampf = 0f;
}
//シュートアニメーションのジャンプで落ちすぎないように
if (transform.position.y < posy && jampf > 0f)
{
transform.position = new Vector3(transform.position.x, posy, transform.position.z);
//----------------------------------------------------------
shootanm = false;
jstartf = false;
//----------------------------------------------------------
}
}
//移動しない状態
public void Standby()
{
//moveアニメーションを止める
_charaanime.AnimatorFloat("move", 0f);
}
//各アニメーション
public void animSetFloat(string mode, float f)
{
_charaanime.AnimatorFloat(mode, f);
}
public void animatorTrigger(string mode)
{
_charaanime.AnimatorTrigger(mode);
}
public void animatorBool(string mode, bool b)
{
_charaanime.AnimatorBool(mode, b);
}
public void setAddFlame(bool b)
{
addflame = b;
}
public void setShootAnm(bool b)
{
shootanm = b;
}
public bool isAddFrame()
{
return addflame;
}
public bool isShootAnim()
{
return shootanm;
}
}