lspdC 66545e8d88 4.6
修改了切换场景BUG
补上了老虎死亡时uI动画
2022-04-06 12:54:54 +08:00

149 lines
3.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Tiger : MonoBehaviour
{
Animator anim;
Player player;
Rigidbody2D rig;
public float dis;
public float speed;
public Vector2 bcakJumpVel;
public int dieCount;
SpriteRenderer[] childrenSp ;
public Color oriColor;
public Color hurtColor;
int count = 0;
void Start()
{
childrenSp = GetComponentsInChildren<SpriteRenderer>();
rig = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
player = FindObjectOfType<Player>(); ;
}
// Update is called once per frame
void Update()
{
if (anim.GetBool("老虎走动"))
if (Mathf.Abs(player.transform.position.x - transform.position.x) < dis)
{
anim.SetTrigger("老虎前扑");
anim.SetTrigger("老虎冲撞");
anim.SetBool("老虎走动", false);
}
}
private void FixedUpdate()
{
if (anim.GetBool("老虎走动"))
{
rig.velocity = new Vector2(speed, rig.velocity.y);
}
//else rig.velocity = Vector2.zero;
}
public void Behavior(string behaviorName)
{
try
{
//触发动画
anim.SetTrigger(behaviorName);
}
catch (System.Exception e)
{
e.ToString();
Debug.LogError("没有找到触发器" + behaviorName);
}
}
public void BackJump() {
rig.velocity = bcakJumpVel;
;
}
public void JudgeForward() {
if (Mathf.Abs(player.transform.position.x - transform.position.x) >= dis && !anim.GetBool("老虎走动"))
{
anim.SetBool("老虎走动", true);
}
else if (Mathf.Abs(player.transform.position.x - transform.position.x) < dis)
{ anim.SetTrigger("老虎冲撞");
anim.SetTrigger("老虎前扑");
anim.SetBool("老虎走动", false);
}
}
//重置所有trigger
public void ResetAllTrigger() {
rig.velocity = Vector2.zero;
AnimatorControllerParameter[] aps = anim.parameters;
for (int i = 0; i < aps.Length; i++)
{
AnimatorControllerParameter paramItem = aps[i];
if (paramItem.type == AnimatorControllerParameterType.Trigger)
{
string triggerName = paramItem.name;
bool isActive = anim.GetBool(triggerName);
if (isActive)
{
anim.ResetTrigger(triggerName);
}
}
}
}
public void Freeze() {
rig.velocity = Vector2.zero;
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.TryGetComponent<Item>(out Item weapon)) {
Debug.Log(weapon.name + "" + weapon.GetIsAtk()+"打到老虎");
weapon.SetIsAtk(false);
count++;
ChangeColor();
Invoke("ResetColor",0.5f);
if (count >= dieCount) {
ResetAllTrigger();
Freeze();
anim.SetTrigger("老虎似了");
GetComponent<Collider2D>().enabled = false;
UIWord.Instance.TigerUI();
Debug.Log("老虎似了");
}
}
}
void ChangeColor() {
foreach (SpriteRenderer sp in childrenSp)
{
sp.color = hurtColor;
}
}
void ResetColor() {
foreach (SpriteRenderer sp in childrenSp)
{
sp.color = oriColor;
}
}
}