zoukankan      html  css  js  c++  java
  • 【Unity3D】2D Sprite基本动效(浮动、旋转等)实现

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class DynamicEffect : MonoBehaviour
    {
        private SpriteRenderer spriteRder;
        private float radian = 0; // 弧度
        private float perRadian = 0.05f; // 每次变化的弧度  
        private float radius = 0.2f; // 半径  
        private Vector3 oldPos, oldScale,oldRot;
        private float oldColorAlpha;
    
        public float _速度 = 5;
        public bool _浮动 = false;
        public bool _旋转 = false;
        public float _浮动和旋转幅度 = 1;
        public bool _伸缩 = false;
        public bool _果冻 = false;
        public float _伸缩和果冻横向变化幅度 = 1;
        public float _伸缩和果冻纵向变化幅度 = 1;
        public bool _渐隐渐显1 = false;
        public bool _渐隐渐显2 = false;
        public float _最隐程度 = 0;
        public bool _摇摆 = false;
        public float _摇摆角度 = 30; 
    
    
        void Start()
        {
            //初始化
            spriteRder = this.gameObject.GetComponent<SpriteRenderer>();
            oldPos = transform.localPosition;
            oldScale = transform.localScale;
            oldRot = transform.localEulerAngles;
            oldColorAlpha = spriteRder.color.a;
    
            //渐隐程度参数范围为0-1,超出范围调整
            _最隐程度 = Mathf.Min(Mathf.Max(0, _最隐程度), 1);
    
            /*//功能拓展1
            foreach (KeyValuePair<string, Vector3> nowpos in nowPos)
            {
                nowPos[nowpos.Key] = transform.localPosition;// 将最初的位置保存到oldPos  
            }
            */
        }
    
    
        void Update()
        {
            perRadian = _速度 / 100;
            radian += perRadian; // 弧度每次增加
            float dx = Mathf.Sin(radian) * radius;
            float dy = Mathf.Cos(radian) * radius;
    
            if (_浮动)
            {
                transform.localPosition = oldPos +  new Vector3(0, _浮动和旋转幅度 * dy, 0);
            }
            if (_旋转)
            {
                transform.localPosition = oldPos +  new Vector3(_浮动和旋转幅度 * dx, _浮动和旋转幅度 * dy, 0);
            }
            if (_伸缩)
            {
                transform.localScale = oldScale +  new Vector3(_伸缩和果冻横向变化幅度 * dx, _伸缩和果冻纵向变化幅度 * dx, 0);
            }
            if (_果冻)
            {
                transform.localScale = oldScale +  new Vector3(_伸缩和果冻横向变化幅度 * dx, _伸缩和果冻纵向变化幅度 * dy, 0);
            }
            if (_渐隐渐显1)
            {
                spriteRder.color = new Color(spriteRder.color.r, spriteRder.color.g, spriteRder.color.b, Mathf.Max((Mathf.Abs(dy)),_最隐程度));
            }
            if (_渐隐渐显2)
            {
                spriteRder.color = new Color(spriteRder.color.r, spriteRder.color.g, spriteRder.color.b, Mathf.Max(Mathf.Sqrt(Mathf.Abs(dy)),_最隐程度));
            }
            if (_摇摆)
            {
                transform.localEulerAngles = oldRot + new Vector3(0, 0, _摇摆角度*dx);
            }
        }
    }
    
  • 相关阅读:
    java kafka单列模式生产者客户端
    手机视频加手机壳小软件
    Jetbrains系列产品(Pycharm IDEA)2020.1及以下版本最新安装方法
    快速解决网页不能复制问题
    MATLAB 2018a软件安装教程
    有哪些超级良心的电脑软件,让你相见恨晚?
    SPSS 25安装资源及其安装教程!!
    SPSS 25 Mac版安装资源及其安装教程!!
    IDE | Pycharm 2020.1.3 安装教程
    MATLAB 2018a软件安装教程
  • 原文地址:https://www.cnblogs.com/garychen97/p/14370310.html
Copyright © 2011-2022 走看看