有一点问题,似乎无法在互联网上的任何地方找到答案。
我在Unity中有4个子状态机(参见附图),在播放时,如果默认使用手枪状态机并播放空闲动画。
我想要一些代码,用户按下M,他可以切换到步枪子状态机。
我已经尝试过animator.Play但是这似乎没有做到这一点,所以我有点卡住了。以下不适用我尝试过:
if(Input.GetKeyDown(KeyCode.M))
{
animator.Play("Rifle",0);
}
有什么想法吗?
答案 0 :(得分:1)
Unity中的每个默认按钮都有自己的“名称”,称为输入轴,您可以在其中调用(即“fire1”,“jump”)
这在移动应用程序中非常有用,在移动应用程序中,您可以设置这些按钮来操作虚拟控制器中的每个屏幕按钮。
如果要添加新的虚拟轴,请转到编辑 - >项目设置 - >输入菜单
这是一个与您的代码几乎相似的示例
var bullet : GameObject;
var shootPoint : Transform;
function Update (){
if(Input.GetKeyDown("Fire1")) || Input.GetKeyDown("space")){
//example
Instantiate(bullet, shootPoint.position, tranform.rotation);
//you could put the code on how you shoot here
}
请记住,每帧都会调用一次更新
希望这有助于
答案 1 :(得分:1)
您可以通过在Animator中创建一个整数参数来完成此操作。然后在您的代码中,当您想切换到另一个时,将整数设置为不同的值;每个转换(白线)都分配了一个不同的整数。
来自代码:
// in the class
Animator anim; // assign in Awake()
// in a function
if(Input.GetKeyDown(KeyCode.M)) {
anim.SetInteger ("WeaponState", 2); // goes to Rifle
}
要使用它,您可以创建一个无状态机作为默认值并删除Null。然后你会将Any State指向None,Pistol,Rifle等。