【发布时间】:2021-08-19 14:01:15
【问题描述】:
我是 Unity 新手。我正在尝试创建一个包含一些随机植物的行星模型。我使用空游戏对象作为父对象,在游戏开始时生成带有随机精灵的植物。当玩家与植物碰撞时,我还添加了一个 scipt 来播放一些动画。但我注意到,每次播放动画时,我的植物角度都会减小一定程度。我使用此代码制作植物生成器:
public class Tree : MonoBehaviour
{
public Transform customPivot;
public float angle;
public GameObject plant;
void Start()
{
transform.RotateAround(customPivot.position,Vector3.forward,angle);
Vector3 pos=this.transform.position;
GameObject myPlant= Instantiate(plant,pos,Quaternion.identity) as GameObject;
myPlant.transform.SetParent(this.transform);
myPlant.transform.Translate(0,0,0);
myPlant.transform.localEulerAngles = new Vector3(0,0,-90);
}
}
我使用以下代码播放植物动画:
public class TreeBehaviour : MonoBehaviour
{
private int rand;
Animator animator;
public Sprite[] Sprite_pic;
void Change(){
rand=Random.Range(0,Sprite_pic.Length);
GetComponent<SpriteRenderer>().sprite=Sprite_pic[rand];
}
private void Start() {
Change();
animator=GetComponent<Animator>();
}
private void OnTriggerEnter2D(Collider2D other) {
if(other.CompareTag("Player")){
animator.SetTrigger("Trigger");
}
}
}
如果玩家与植物发生碰撞,会触发植物动画。动画只是简单地将植物旋转到一定程度,然后将其旋转回零度。当我玩它时,它显示:
每次玩家与植物碰撞时,植物动画都会将植物旋转一点,然后旋转回来,但是当我的玩家旋转几次并触发植物动画时,它看起来像这样:
似乎每次播放动画,动画停止后,我的植物旋转都会发生轻微变化。我很困惑,因为我已将动画设置回零度。有谁知道我做错了什么?
编辑: 因此,正如建议的那样,我尝试取消勾选根运动,但我得到了这个:
看起来所有的角度都归零了。我尝试在玩游戏时更改变换部分的角度,但角度仍然为零度。我尝试添加:
void Update()
{
this.transform.localEulerAngles = new Vector3(0,0,-90);
}
但是角度还是0度
【问题讨论】:
标签: unity3d animation animator