我正在尝试为生成的平台预制件设置动画(平台对象本身在一个空的范围内,因为它的位置发生了变化)当 Runner 对象与它碰撞时(onCollisonEnter)向下,在碰撞退出时向上。
我已经逐字逐句地按照我的老问题给出的答案 - Unity,C# - 在碰撞输入时不能让对象从当前 y 位置向下移动一次?但是尽管按照指示在我的动画师中有这个,但无法使用动画师来制作动画:
一位回答的人建议我使用 Lerp 完全使用代码为平台预制件制作动画。我已经研究过 Lerp,但是由于我需要 2 个单独的状态来表示 Down/Idle Down(使平台保持关闭),而 up/idle up 也是如此,我不知道该怎么做。
如何以编程方式使用 Lerp 实现这种效果?能不能达到我想要的效果?
错误:
编辑:
我如何生成(出队然后入队)我的平台:
nextPosition += new Vector3 (
Random.Range (minGap.x, maxGap.x) + scale.x,
Random.Range (minGap.y, maxGap.y),
Random.Range (minGap.z, maxGap.z));
Transform o = objectQueue.Dequeue();
o.localScale = scale;
o.localPosition = position;
//o.localEulerAngles = rotation;
o.gameObject.SetActive (true);
int materialIndex = Random.Range(0, materials.Length);
o.GetComponent<Renderer>().material = materials[materialIndex];
o.GetComponent<Collider> ().material = noFrictionMaterial;
platform newScript = new o.GetComponent<platform>(); //getting an error here when I tried to implement your code
objectQueue.Enqueue (o);
if(nextPosition.y < minY){
nextPosition.y = minY + maxGap.y;
}
else if(nextPosition.y > maxY){
nextPosition.y = maxY - maxGap.y;
}
这就是向量应该始终是什么,也是我最初在 start() 中设置的:
up = new Vector3 (transform.position.x, transform.position.y, transform.position.z);
down = new Vector3 (transform.position.x, transform.position.y-2f, transform.position.z);
由于平台实际上并没有产生,你确定这是错误吗?你能帮助我吗?