unity3d 在特定帧冻结动画

a0zr77ik  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(200)

我需要一些帮助。我在一个2d团结游戏,其中有一个毛茸茸的球作为主角。这个毛茸茸的球有一个手组件(儿童),其中有一个动画。每一个单独的帧有一个箱子碰撞器属性。这只手将被激活时,我按下E和动画将开始在我的光标所在的方向。所以,问题是下一个:我想让那只手抓住东西。像一个盒子。在这里我请求你的帮助。我试着找出我如何可以冻结动画一小段时间,像5秒或直到我再次按下E,当盒子碰撞器的特定帧碰撞一个对象(如地面或盒子)。这里是手的脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class facingScript : MonoBehaviour
{
    private SpriteRenderer render;
    private Camera mainCam;
    private Vector3 mousePos;
    private Animator aniHand;

    public bool freezeAniamtion = false;

    void Start()
    {
        render = GetComponent<SpriteRenderer>();
        mainCam = Camera.main;
        gameObject.SetActive(false);
        aniHand = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        
        mousePos = Input.mousePosition;
        mousePos = mainCam.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, mainCam.transform.position.z - transform.position.z));
        
        Vector3 rotation = mousePos - transform.position;
        if(rotation.x > 0)
            render.flipY = true;
        else
            render.flipY = false;

    
            if(Input.GetKeyDown(KeyCode.E)) 
            {
            aniHand.Play("CharacterHand");
            }
            

    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if(collision.gameObject.tag == "box")
        {
            StartCoroutine(HandCollide());
            // help pls :) 
        }
    }

    private IEnumerator HandCollide(float waitTime)
    {
        // idk what i should put here :P 
    }

    
    
}`

我尝试使用aniHand.speed,但它什么也不做,使用PlayInFixedTime,但不知道它是如何工作的

mzsu5hc0

mzsu5hc01#

所以.我fugire出来一些如何.我有另一个脚本,激活和deactivate我的手1秒.当我试图停止我的动画手脚本它只是从另一个脚本

相关问题