网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月30日漏签0天
unity吧 关注:52,137贴子:145,742
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 2回复贴,共1页
<<返回unity吧
>0< 加载中...

求助大佬!怪物HP为0后不进入死亡动画?

  • 取消只看楼主
  • 收藏

  • 回复
  • Liszt天空城
  • 锋芒毕露
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一楼怪兽控制脚本
public class MonsterCtrl : MonoBehaviour {
public enum MonsterState { idle, trace, attack, die };
public MonsterState monsterState = MonsterState.idle;
private Transform monsterTr;
private Transform playerTr;
private NavMeshAgent nvAgent;
private Animator animator;
public float traceDist = 10.0f;
public float attackDist = 2.0f;
private bool isDie = false;
public GameObject bloodEffect;
public GameObject bloodDecal;
private int hp = 100;
// Use this for initialization
void Start () {
monsterTr = this.gameObject.GetComponent<Transform> ();
playerTr = GameObject.FindWithTag ("Player").GetComponent<Transform> ();
nvAgent = this.gameObject.GetComponent<NavMeshAgent> ();
animator = this.gameObject.GetComponent<Animator> ();
nvAgent.destination = playerTr.position;
StartCoroutine (this.CheckMonsterState());
StartCoroutine (this.MonsterAction ());
}
IEnumerator CheckMonsterState()
{
while (!isDie) {
yield return new WaitForSeconds (0.2f);
float dist = Vector3.Distance (playerTr.position, monsterTr.position);
if (dist <= attackDist) {
monsterState = MonsterState.attack;
} else if (dist <= traceDist) {
monsterState = MonsterState.trace;
} else {
monsterState = MonsterState.idle;
}
}
}
IEnumerator MonsterAction()
{
while (!isDie) {
switch (monsterState) {
case MonsterState.idle:
nvAgent.Stop ();
animator.SetBool ("IsTrace", false);
break;
case MonsterState.trace:
nvAgent.destination = playerTr.position;
nvAgent.Resume ();
animator.SetBool ("IsAttack", false);
animator.SetBool ("IsTrace", true);
break;
case MonsterState.attack:
nvAgent.Stop ();
animator.SetBool ("IsAttack", true);
break;
}
yield return null;
}
}
void OnCollisionEnter(Collision coll)
{
if (coll.gameObject.tag == "BULLET") {
CreateBloodEffect (coll.transform.position);
hp -= coll.gameObject.GetComponent<BulletCtrl> ().damage;
Debug.Log ("Monster HP = " + hp.ToString ());
if (hp <= 0)
{
MonsterDie ();
}
Destroy (coll.gameObject);
animator.SetTrigger ("IsHit");
}
}
void MonsterDie()
{
StopAllCoroutines ();
isDie = true;
monsterState = MonsterState.die;
nvAgent.Stop ();
animator.SetTrigger ("IsDie");
gameObject.GetComponentInChildren<CapsuleCollider> ().enabled = false;
foreach (Collider coll in gameObject.GetComponentsInChildren<SphereCollider>()) {
coll.enabled = false;
}
}
void CreateBloodEffect(Vector3 pos)
{
GameObject blood1 = (GameObject)Instantiate (bloodEffect, pos, Quaternion.identity);
Destroy (blood1, 2.0f);
Vector3 decalPos = monsterTr.position + (Vector3.up * 0.05f);
Quaternion decalRot = Quaternion.Euler (90, 0, Random.Range (0, 360));
GameObject blood2 = (GameObject)Instantiate (bloodDecal, decalPos, decalRot);
float scale = Random.Range (1.5f, 3.5f);
blood2.transform.localScale = Vector3.one * scale;
Destroy (blood2, 5.0f);
}
void OnTriggerEnter(Collider coll)
{
Debug.Log (coll.gameObject.tag);
}
void OnPlayerDie()
{
StopAllCoroutines ();
nvAgent.Stop ();
animator.SetTrigger ("IsPlayerDie");
}
}


  • Liszt天空城
  • 锋芒毕露
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
二楼子弹伤害脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletCtrl : MonoBehaviour {
public int damage = 20;
public float speed = 1000.0f;
// Use this for initialization
void Start () {
GetComponent<Rigidbody> ().AddForce (transform.forward * speed);
}
}


2025-12-30 03:07:32
广告
不感兴趣
开通SVIP免广告
  • Liszt天空城
  • 锋芒毕露
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
子弹打到怪物掉血掉到0后就没有任何反应了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回unity吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示