在Unity中实现动画的正反播放代码

using UnityEngine;
using System.Collections;

public class AnimationAntiSowing : MonoBehaviour {

  public static AnimationAntiSowing _initialise;

  void Awake()
  {
    _initialise = this;
  }

  /// <summary>
  /// 动画进行正反播放
  /// </summary>
  /// <param name="gameObject">需要播放动画的物体</param>
  /// <param name="isZhengOrFan">动画的播放状态</param>
  /// <param name="animation">动画状态</param>
  /// <returns></returns>
  public bool isPositiveAndNegativePlay(GameObject gameObject,bool isZhengOrFan,AnimationState animation)
  {
    //判断传入的动画的播放状态
    //----传入的状态为true时,表示正常播放
    //----传入的状态为false时,表示动画播放完,可以进行反向播放
    if(!isZhengOrFan)
    {
      //当没有播放动画的时候,播放动画
      if(!gameObject.animation.isPlaying)
      {
        gameObject.animation.Play();
        //-----改变动画的播放状态-----
        //动画的当前时间置为初始
        animation.time = 0f;
        //动画的播放速度为正常速度
        animation.speed = 1.0f;
        //改变传入的bool变量的值
        isZhengOrFan = true;
      }
    }
    else
    {
      //当没有播放动画的时候,播放动画
      if (!gameObject.animation.isPlaying)
      {
        gameObject.animation.Play();
        //-----改变动画的播放状态-----
        //动画的当前时间置为动画的时长
        animation.time = animation.length;
        //向后走,即动画进行反向播放,从终点向起点播放
        animation.speed = -1.0f;
        //改变传入的bool变量的值
        isZhengOrFan = false;
      }
    }

    return isZhengOrFan;
  }
}

以上就是本文分享的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • Unity3D中脚本的执行顺序和编译顺序

    事件函数的执行顺序 先说一下执行顺序吧. 官方给出的脚本中事件函数的执行顺序如下图: 我们可以做一个小实验来测试一下: 在Hierarchy视图中创建三个游戏对象,在Project视图中创建三条脚本,如下图所示,然后按照顺序将脚本绑定到对应的游戏对象上: 三条脚本的代码完全一样,只是做了一点名称上的区分: using UnityEngine;using System.Collections;public class Scring0 : MonoBehaviour{    void Awake()

  • 基于Unity容器中的对象生存期管理分析

    IoC容器的对象生存期管理 如果你一直在使用IoC容器,你可能已经使用过了一些对象生存期管理模型(Object Lifetime Management).通过对对象生存期的管理,将使对象的复用成为可能.同时其使容器可以控制如何创建和管理对象实例. Unity提供的对象生存期管理模型是通过从抽象类LifetimeManager的派生类来完成.Unity将为每个类型的注册创建生存期管理器.每当UnityContainer需要创建一个新的对象实例时,将首先检测该对象类型的生存期管理器,是否已有一个对象

  • unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk)

    unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk),总的流程分为以下6个步骤: 1.安装java_jdk 2.配置java环境变量 3.更新android的sdk 4.从Unity3d中发布出apk文件 5.创建android虚拟机并运行 6.将apk文件安装到android虚拟机中 (为方便新手,在下面对每个步骤的具体操作及可能遇到的问题详细提一下) 1.安装java_jdk 官网(www.java.com),免费,我安装的文件的名字是j

  • Unity3D动态对象优化代码分享

    具体解释请仔细看注释里已经讲解的很细致了,这里就不多废话了 复制代码 代码如下: using UnityEngine; using System.Collections; using System.Collections.Generic; /// <summary> /// 动态对象优化 /// </summary> public class DynamicOptimization : MonoBehaviour {     // Use this for initializati

  • 在Unity中实现简单的伪时间同步

    在Unity中实现简单的伪时间同步,只是读取数据库所在电脑的当前时间 复制代码 代码如下: using UnityEngine; using System.Collections; using System.Runtime.InteropServices; using System.Data; using System.Data.SqlClient; public class ChangeTime {     //Kernel32.dll在32位系统和64位系统有区别,64位系统中需要设置为以管

  • 在Unity中实现动画的正反播放代码

    using UnityEngine; using System.Collections; public class AnimationAntiSowing : MonoBehaviour { public static AnimationAntiSowing _initialise; void Awake() { _initialise = this; } /// <summary> /// 动画进行正反播放 /// </summary> /// <param name=&q

  • Unity中 mesh生成斜坡的示例代码

    Mesh概念: Mesh是Unity中的一个组件,称为网格组件.通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而多边形实际上是由多个三角形拼接而成的.所以一个3D模型的表面其实是由多个彼此相连的三角面构成.三维空间中,构成这些三角形的点和边的集合就是Mesh. Mesh组成: 1.顶点坐标数组vertexes 2.顶点在uv坐标系中的位置信息数组uvs 3.三角形顶点顺时针或者逆时针索引数组triangles 4.MeshFiler组件,用于增加mesh属性 5.MeshRend

  • Unity中的静态批处理和动态批处理操作

    前言 Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们.这一操作,我们称之为"批处理",能得到越好的渲染性能. Unity中内建的批处理机制所达到的效果要明显强于使用几何建模工具的批处理效果,因为,Unity引擎的批处理操作是在物体的可视裁剪操作之后进行的,处理的几何信息少很多. 材质 只有拥有相同材质的物体才可以进行批处理,因此,你需在程序中尽可能多地复用材质.如果你的两个材质仅仅是纹理不同,那么你可通过纹理拼合来将这两张纹理拼合成一张大的纹理,这样,你就可以使

  • Unity中webgl使用避雷要素指南

    目录 1.不支持ios设备播放音频(无论是MP3还是ogg格式) 2.在ios设备的浏览器(无论是Safari 还是微信浏览器) 3.发布到webgl的时候注意所有Text都需要使用自定义的字体 4.若要更改loading界面 5.如果想做微信小程序可以通过laya进行后期制作 6.在本地iis服务器运行没有问题 7.在webgl中使用对象池模式可能会出现莫名其妙的状况 8.在webgl中调用接口动态生成元素还有个坑 1.不支持ios设备播放音频(无论是MP3还是ogg格式) 目前是通过unit

  • Unity Blend Tree动画混合树使用入门教程

    介绍 在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然. 这时候就需要动画混合树Blend Tree这个功能.使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候,在走动画与跑动画中生成多个过渡用的插值动画以达到平滑得切换的功能. 创建混合树 在Animator窗口的空白处右键,Create State > From New Blend Tree,然后双击Blend Tree进入混合树.笔者使用的是unity2019.4的版本,现在

  • 讲解iOS开发中对音效和音乐播放的简单实现

    音效的播放 一.简单介绍 简单来说,音频可以分为2种 (1)音效 又称"短音频",通常在程序中的播放时长为1~2秒 在应用程序中起到点缀效果,提升整体用户体验 (2)音乐 比如游戏中的"背景音乐",一般播放时间较长 框架:播放音频需要用到AVFoundation.framework框架 二.音效的播放 1.获得音效文件的路径 复制代码 代码如下: NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_

  • IOS swift中的动画的实例详解

    IOS swift中的动画的实例详解 UIView的通用动画 let view = UIView(frame: CGRectMake(10.0, 10.0, 100.0, 40.0)) self.view.addSubview(view) view.backgroundColor = UIColor.lightGrayColor() // 位置改变 var frame = view.frame UIView.animateWithDuration(0.6, delay: 2.0, options

  • C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信

    首先来说一下本文中例子所要实现的功能: 基于ProtoBuf序列化对象 使用Socket实现时时通信 数据包的编码和解码 下面来看具体的步骤: 一.Unity中使用ProtoBuf 导入DLL到Unity中, 创建网络传输的模型类: using System; using ProtoBuf; //添加特性,表示可以被ProtoBuf工具序列化 [ProtoContract] public class NetModel { //添加特性,表示该字段可以被序列化,1可以理解为下标 [ProtoMem

  • jQuery中常用动画效果函数(日常整理)

    jquery中动画效果非常多,下面小编给大家分享一下jquery中的动画函数. jQuery的效果函数列表: animate():对被选元素应用"自定义"的动画. clearQueue():对被选元素移除所有排队的函数(仍未运行的). delay():对被选元素的所有排队函数(仍未运行)设置延迟. dequeue():运行被选元素的下一个排队函数. fadeln():逐渐改变被选元素的不透明度,从隐藏到可见. fadeOut():逐渐改变被元素的不透明度,从可见到隐藏. fadeTo(

  • 在Unity中捕捉Android的常用按钮返回事件

    在Unity开发中捕捉Android的常用事件其实很简单 Input.GetKey(KeyCode.Escape) Input.GetKeyDown(KeyCode.Home) // 返回键 if ( Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Escape))) { //.... } // Home键 if ( Application.platform == RuntimePlat

随机推荐