C# 僵尸工作正常,但它';s预置在unity中的动画中创建问题
我正在unity中创建一个FPS射击游戏。下面是我在僵尸上使用的脚本,它工作正常,但当我创建僵尸的预制体时,它也工作正常,但它停止了攻击动画,其他事情也工作正常,我现在该怎么办?请帮助我……我使用了三个不同的僵尸,使用了相同的脚本,它们都工作得很好,但当我创建这些僵尸的预制体时,它们再次创建问题并停止执行攻击动画,尽管当它们靠近时,我的健康状况会下降。请帮我解决这个问题,我不知道我的代码是不是错了,或者我在unity设置中犯了什么错误,但要做到这一点并纠正它是非常困难的,伙计们,这是我最后一年的项目,我陷入了非常困难的境地C# 僵尸工作正常,但它';s预置在unity中的动画中创建问题,c#,unity3d,unity3d-2dtools,C#,Unity3d,Unity3d 2dtools,我正在unity中创建一个FPS射击游戏。下面是我在僵尸上使用的脚本,它工作正常,但当我创建僵尸的预制体时,它也工作正常,但它停止了攻击动画,其他事情也工作正常,我现在该怎么办?请帮助我……我使用了三个不同的僵尸,使用了相同的脚本,它们都工作得很好,但当我创建这些僵尸的预制体时,它们再次创建问题并停止执行攻击动画,尽管当它们靠近时,我的健康状况会下降。请帮我解决这个问题,我不知道我的代码是不是错了,或者我在unity设置中犯了什么错误,但要做到这一点并纠正它是非常困难的,伙计们,这是我最后一年的
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerChaseWithoutFaceFollowing : MonoBehaviour {
public Transform player;
// public Transform head;
// public Transform sword;
static Animator anim;
//bool pursuing = false;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>(); // assigning component
}
// Update is called once per frame
void Update()
{
Vector3 direction = player.position - this.transform.position; //to get the direction
// float angle = Vector3.Angle(direction, this.transform.forward);
// float swordmovement = Vector3.Angle(direction, head.up);
if (anim.GetBool("Death"))
{
anim.SetBool("isWalking", false);
anim.SetBool("isIdle", false);
anim.SetBool("isAttacking", false);
}
else
{
if (Vector3.Distance(player.position, this.transform.position) < 10 )
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), 0.1f); // rotate enemy to player
anim.SetBool("isIdle", false); // no more idle state
if (direction.magnitude > 3) // start walking
{
this.transform.Translate(0, 0, 0.5f);
anim.SetBool("isWalking", true); //start walking animation
anim.SetBool("isAttacking", false);
}
else
{
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", true);
}
}
else
{
anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
//pursuing = false;
}
}
//if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
//{
// AudioSource EnemyAttack = GetComponent<AudioSource>();
// EnemyAttack.Play();
//}
//if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
//{
// PlayerHealthBar.value -= 2;
// Debug.Log("Hit");
// //anim.SetBool("isAttacking", false);
//}
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类玩家有以下行为:单一行为{
公共转换播放器;
//公众转化负责人;
//公共转化剑;
静态动画;
//bool=false;
//用于初始化
void Start()
{
anim=GetComponent();//分配组件
}
//每帧调用一次更新
无效更新()
{
Vector3 direction=player.position-this.transform.position;//获取方向
//浮动角度=矢量3.角度(方向,this.transform.forward);
//浮剑运动=矢量3.角度(方向,头部向上);
如果(anim.GetBool(“死亡”))
{
动画设置工具(“isWalking”,false);
动画设置工具(“isIdle”,假);
动画设置工具(“isAttacking”,false);
}
其他的
{
if(向量3.距离(player.position,this.transform.position)<10)
{
方向y=0;
this.transform.rotation=Quaternion.Slerp(this.transform.rotation,Quaternion.LookRotation(direction),0.1f);//将敌人旋转给玩家
anim.SetBool(“isIdle”,false);//不再处于空闲状态
如果(direction.magnity>3)//开始行走
{
this.transform.Translate(0,0,0.5f);
SetBool(“isWalking”,true);//开始行走动画
动画设置工具(“isAttacking”,false);
}
其他的
{
动画设置工具(“isWalking”,false);
动画设置工具(“isAttacking”,真);
}
}
其他的
{
anim.SetBool(“isIdle”,真);
动画设置工具(“isWalking”,false);
动画设置工具(“isAttacking”,false);
//追求=虚假;
}
}
//if(anim.GetBool(“isAttacking”)&&!anim.GetBool(“isWalking”))
//{
//AudioSource EnemyAttack=GetComponent();
//EnemyAttack.Play();
//}
//if(anim.GetBool(“isAttacking”)&&!anim.GetBool(“isWalking”))
//{
//PlayerHealthBar.value-=2;
//Log(“Hit”);
////anim.SetBool(“isAttacking”,false);
//}
}
}
请参阅下面的图片
您设置参数的方式可能会产生误导。尝试使用int作为animator过渡参数,因此不要这样做
anim.SetBool("isIdle", true);
anim.SetBool("isWalking", false);
anim.SetBool("isAttacking", false);
是吗
anim.SetInt(“状态”,0)代码>这是关于,而不是关于。