【发布时间】:2019-03-04 22:08:32
【问题描述】:
我目前正在制作游戏,并且我正在尝试让镜子在玩家走过时播放随机动画。我设法让它工作,有点,但遇到了一些麻烦。
所以首先我创建了一个空闲动画以及三个随机动画,当玩家从空闲动画中经过和离开时激活这些动画。然后,我创建了一个简单的过渡到三个状态中的每一个,并保留标准退出时间和过渡持续时间。我创建了这个脚本来尝试激活动画:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class mirrorActivate : MonoBehaviour
{
private GameObject FSSecurity;
public GameObject mirrorblank;
public List<AnimationClip> anim = new List<AnimationClip>();
// Start is called before the first frame update
private void Awake()
{
}
void Start()
{
FSSecurity = GameObject.Find("Female Security");
}
// Update is called once per frame
void Update()
{
if (FSSecurity.transform.position.x == 10)
{
StartAnimation();
}
}
public void StartAnimation()
{
int random = Random.Range(0, anim.Count);
mirrorblank.GetComponent<Animator>().Play(anim[random].name);
}
}
工作原理:每次玩家走到这个位置时,它似乎都会播放一个随机动画。
什么不工作?: 1.进入场景idle动画立即触发三个动画之一,不激活if语句。 ((它应该处于空闲状态,并且如果 if() 为真,则仅随机切换到三个之一)) 2. 由于浮点精度使用 == 不实用,如果我使用带有 = 而不是 == 的范围,理论上可以解决此问题。但是,如果有更好的解决方案来激活传递对象的玩家,我愿意接受建议。 3. 随机播放的动画没有完全播放动画应该持续的完整时间。 4. 激活后的最后一个问题,直到下次激活它们才会返回空闲状态。
我在寻找什么:每次用户走过经过的对象并在完成返回空闲时播放随机动画。附带说明一下,是否有一种更有效的方法可以知道玩家何时通过对象(我使用的是 2D)
(出于某种原因,我不让我在帖子上贴上 unity2d 标签)
之间的简单转换,没有设置触发器或任何东西
【问题讨论】:
-
能否请您粘贴您的动画控制器的屏幕截图,以便我们查看您的过渡策略?
-
“将转换引入空闲状态会产生其他问题”是什么意思?
-
@AlexMyers 我刚刚更新了最后一次的问题。请检查上方以查看最终编辑。那是我犯的一个错误,我也改变了代码中的一个东西,忘记了我认为指向空闲状态的转换是导致它的原因