让CSDN的浪漫弥漫女神节_Unity基础不动山不摇_回顾篇

Posted 秩沅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让CSDN的浪漫弥漫女神节_Unity基础不动山不摇_回顾篇相关的知识,希望对你有一定的参考价值。


👨‍💻个人主页@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unity常用API


女神节专题篇


文章目录


🎶前言


🅰️ 让CSDN的浪漫弥漫女神节💕

商业游戏基础——文件配置


🎶(坐标系补充


①世界坐标系——transform…
②物体坐标系——transform.Local…
③屏幕坐标系
④视口坐标系——用的较少,主要调整窗口

坐标转换


🎶(MahF数学补充


Math和MathF的区别:mathf是unity封装的类它在基于math数学类的基础上添加了适合unity游相关的方法

强制类型转换和向下取整&向下取整:除去c#中常用的三个强转 —ceilToInt() 和 FloorInt()

钳制函数MathF.clamp()

Mathf.sigh()-判断正负

Mathf.MoveTowords()——无限接近但不完全相等


🎶(向量基础补充


  • 向量之间的距离 ——Vector3.Disrtance() 向量 和向量之间相减 A - B
  • 0向量——Vector.zero()
  • 向量模长——Vector3.magnitude() 相等于向量之间的距离
  • 单位向量——Vector3.normalized()适用于物体移动的时候的单位化计算
  • 向量+向量 和向量+位置 的区别——前者为向量(高数中的向量相加)后者为相当于扩大作用结果是位置
  • 位置-位置的几何意义——结果为向量 ,向量-向量 = 向量
  • 向量的加减乘除——加减应用于物体平移 乘除的进行缩放要用本地坐标

🎶(光源组件相关


☑️三光——点光源,聚光灯,面光源(烘培模式开启)–烘培-节约性能

☑️光源模式——实时,烘培,混合

☑️颜色——光源颜色

☑️阴影——生硬,柔和——效率区别
-

☑️投影遮罩——只适用聚光灯,需添加Textuer

☑️光晕开关 + 耀斑(聚光)—— 前者是球形光(太阳蜡烛) 后者是人眼看到强光的效果 (耀斑有其对应的材质)


  • 👺光设置面板界面 --window -light

针对设置光源参数的默认值

☑️天空盒材质的更换
☑️太阳光源的设置
☑️Fog雾开关——雾面效果,性能消耗
☑️耀斑的调节
☑️遮罩材质的更改


🎶(Camera组件相关


可编辑参数了解

  • 🙈Clear Flags

  • 🙈CullingMask选择层级进行渲染

  • 🙈Projection

  • 🙈Target Texture 小地图应用

  • 🙈Occlusion Culing 的勾选 优化性能 减少渲染

  • 🙈渲染分辨率的设置了解 --性能相关

  • 🙈分屏操作 viewport Rect --应用于双人成行类的游戏

API

  • 🙈静态成员

  • 🙈委托

  • 🙈成员变量


🎶(碰撞器组件相关


  • ✌️种类

box,胶囊,球形,车轮,网格,地形

  • ✌️物理材质

  • ✌️碰撞函数


🎶(Screen组件相关


  • 🅰️当前屏幕分辨率宽高的获取
    ——Resolution r = Sreen.currentResolution
  • 🅰️当前屏幕宽高的设置
    ——Sreen.width &Screen.heiht
  • 🅰️当前屏幕的休眠模式
    ——scree.SleepTimeOut .NewSleep
  • 🅰️窗口转换的四个模式
  • 🅰️移动屏幕转向

🎶(Mono的补充


  • 🧠transform.enable()+transform.Active
  • 🧠xx.GetComponent<>()泛型获取
  • 🧠XX.GetComponent() as XX
  • 🧠XX.GetComponent(Typeof()) as XX Typey类型获取
  • 🧠gameObject.name
  • 🧠 new 脚本类型 [ ] yy / yy = this.GetComponents();//得到多个脚本
  • 🧠 getComponentInChrild/Parent //子对象或父对象组件的获取
  • 🧠更安全的获取脚本TryGetComponent<>();

if(this.TryGetComponent<>( out 脚本名) )

//获取到了就进行处理


🎶(辅助特性相关


☑️辅助特性:

  • 字典 自定义类型 私有和被保护类型无法在Inspector面板上显示
  • 【serializeField】——将私有类型和保护类型可视化到面板上
  • 【System.serializeField】——将自定义类型可视化到面板上
  • 【HideIninspector】——将公共变量隐藏
  • 【Header(“分组说明”)】——将可视化变量进行分组
  • 【Tooltip(“内容说明”)】——鼠标移动变量处时显示说明信息
  • 【Range(最小值,最大值)】——通过拖动条的方式来控制范围
  • 【contextMenuItem(”变量名x“,“变量的方法名”)】——停在可视化变量上时显示方法,并可以点击调用–方法需要无参无返回
  • 【contextMenu(”测试函数名")】——只为调式,右键选择方法执行
  • 【Multline(x)】——将字符串设置可见的x行
  • 【TextArea(3,4))】——添加滚动条来查看设置的文本区
  • 【DisallowMultipleComponent】-不让挂载多重脚本

🎶(Input和transform补充


Input

  • 🦉长按和短按的区别 —Dwon UP的uP的有无
  • 🦉Input.anyKey()
  • 🦉Input.inputString()
  • 🦉GetAxis 和GetAxisRawd的区别 后者返回值为三个固定值
  • 🦉GetMousePosition
  • 🦉Input.MouseScrollDelta_应用于滑轮控制炮管

transform

  • 🦉transform.LocalScale_缩放
  • 🦉transform.Lookat——看向点和看向物体

⭐相关文章⭐

【2023unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

【2023unity游戏制作-mango的冒险】-3.基础动作和动画API实现

【2023unity游戏制作-mango的冒险】-2.始画面API制作

【2023unity游戏制作-mango的冒险】-1.场景搭建

“狂飙”游戏制作—游戏分类图鉴(网易游学)

本站最全-unity常用API大全(万字详解),不信你不收藏


  • 🙈Target Texture 小地图应用
    静态成员

字体:

颜色:
👌


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!

女神节告白代码

今天是女神节,送给所有女神们一句话:

爱自己是终生浪漫的开始,无论何时都要好好爱自己

目录

1. 请求动画帧填充

2.点类

3.粒子类

​编辑 4.ParticlePool 池类

5.创建和填充

6.处理循环队列

7.更新活动粒子

8.移除非活性粒子

9.绘制有源粒子 

10.整合

​编辑 11.进行样式表达

 12.使用虚拟画布创建粒子图像

13.用来创建路径的辅助器功能

14.创建路径

15.创建填充

15.创建图像

16.做出成果

17.创建新的粒子

18.更新和绘制粒子

19.重新处理画布大小

20. 延迟渲染引导

 21.全部代码


 今天我们来写表白爱心代码

首先HTML里body只要写两行代码就可以了,后面都是js代码了

我们的样式css代码如下:

首先我们先定义一个Settings

1. 请求动画帧填充

RequestAnimationFrame polyfill by Erik M?ller

2.点类

 Point class

3.粒子类

Particle class

 4.ParticlePool 池类

 ParticlePool class

5.创建和填充

create and populate particle pool 

6.处理循环队列

 handle circular queue 

7.更新活动粒子

update active particles

8.移除非活性粒子

remove inactive particles

9.绘制有源粒子 

draw active particles

10.整合

Putting it all together

 11.进行样式表达

get point on heart with -PI <= t <= PI

 12.使用虚拟画布创建粒子图像

creating the particle image using a dummy canvas

13.用来创建路径的辅助器功能

 helper function to create the path

14.创建路径

 create the path

15.创建填充

15.创建图像

16.做出成果

17.创建新的粒子

18.更新和绘制粒子

update and draw particles

19.重新处理画布大小

20. 延迟渲染引导

 delay rendering bootstrap

 21.全部代码

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <style>
    * 
      padding: 0;
      margin: 0;
    
    html,
    body 
      height: 100%;
      padding: 0;
      margin: 0;
      background: rgb(253, 253, 253);
    
    canvas 
      position: absolute;
      width: 100%;
      height: 100%;
    
    .aa 
      position: fixed;
      left: 50%;
      bottom: 10px;
      color: #ccc;
    
    h1
        text-align: center;
        padding-top: 100px;
    
  </style>
  <body>
      <h1>女神节快乐!</h1>
    <canvas id="pinkboard"></canvas>


    <script>
      /*
       * Settings
       */
      var settings = 
        particles: 
          length: 500, // maximum amount of particles
          duration: 2, // particle duration in sec
          velocity: 100, // particle velocity in pixels/sec
          effect: -0.75, // play with this for a nice effect
          size: 30 // particle size in pixels
        
      ;

      /*
       * RequestAnimationFrame polyfill by Erik M?ller
       */
      (function () 
        var b = 0;
        var c = ["ms", "moz", "webkit", "o"];
        for (var a = 0; a < c.length && !window.requestAnimationFrame; ++a) 
          window.requestAnimationFrame = window[c[a] + "RequestAnimationFrame"];
          window.cancelAnimationFrame =
            window[c[a] + "CancelAnimationFrame"] ||
            window[c[a] + "CancelRequestAnimationFrame"];
        
        if (!window.requestAnimationFrame) 
          window.requestAnimationFrame = function (h, e) 
            var d = new Date().getTime();
            var f = Math.max(0, 16 - (d - b));
            var g = window.setTimeout(function () 
              h(d + f);
            , f);
            b = d + f;
            return g;
          ;
        
        if (!window.cancelAnimationFrame) 
          window.cancelAnimationFrame = function (d) 
            clearTimeout(d);
          ;
        
      )();

      /*
       * Point class
       */
      var Point = (function () 
        function Point(x, y) 
          this.x = typeof x !== "undefined" ? x : 0;
          this.y = typeof y !== "undefined" ? y : 0;
        
        Point.prototype.clone = function () 
          return new Point(this.x, this.y);
        ;
        Point.prototype.length = function (length) 
          if (typeof length == "undefined")
            return Math.sqrt(this.x * this.x + this.y * this.y);
          this.normalize();
          this.x *= length;
          this.y *= length;
          return this;
        ;
        Point.prototype.normalize = function () 
          var length = this.length();
          this.x /= length;
          this.y /= length;
          return this;
        ;
        return Point;
      )();

      /*
       * Particle class
       */
      var Particle = (function () 
        function Particle() 
          this.position = new Point();
          this.velocity = new Point();
          this.acceleration = new Point();
          this.age = 0;
        
        Particle.prototype.initialize = function (x, y, dx, dy) 
          this.position.x = x;
          this.position.y = y;
          this.velocity.x = dx;
          this.velocity.y = dy;
          this.acceleration.x = dx * settings.particles.effect;
          this.acceleration.y = dy * settings.particles.effect;
          this.age = 0;
        ;
        Particle.prototype.update = function (deltaTime) 
          this.position.x += this.velocity.x * deltaTime;
          this.position.y += this.velocity.y * deltaTime;
          this.velocity.x += this.acceleration.x * deltaTime;
          this.velocity.y += this.acceleration.y * deltaTime;
          this.age += deltaTime;
        ;
        Particle.prototype.draw = function (context, image) 
          function ease(t) 
            return --t * t * t + 1;
          
          var size = image.width * ease(this.age / settings.particles.duration);
          context.globalAlpha = 1 - this.age / settings.particles.duration;
          context.drawImage(
            image,
            this.position.x - size / 2,
            this.position.y - size / 2,
            size,
            size
          );
        ;
        return Particle;
      )();

      /*
       * ParticlePool class
       */
      var ParticlePool = (function () 
        var particles,
          firstActive = 0,
          firstFree = 0,
          duration = settings.particles.duration;

        function ParticlePool(length) 
          // create and populate particle pool
          particles = new Array(length);
          for (var i = 0; i < particles.length; i++)
            particles[i] = new Particle();
        
        ParticlePool.prototype.add = function (x, y, dx, dy) 
          particles[firstFree].initialize(x, y, dx, dy);

          // handle circular queue
          firstFree++;
          if (firstFree == particles.length) firstFree = 0;
          if (firstActive == firstFree) firstActive++;
          if (firstActive == particles.length) firstActive = 0;
        ;
        ParticlePool.prototype.update = function (deltaTime) 
          var i;

          // update active particles
          if (firstActive < firstFree) 
            for (i = firstActive; i < firstFree; i++)
              particles[i].update(deltaTime);
          
          if (firstFree < firstActive) 
            for (i = firstActive; i < particles.length; i++)
              particles[i].update(deltaTime);
            for (i = 0; i < firstFree; i++) particles[i].update(deltaTime);
          

          // remove inactive particles
          while (
            particles[firstActive].age >= duration &&
            firstActive != firstFree
          ) 
            firstActive++;
            if (firstActive == particles.length) firstActive = 0;
          
        ;
        ParticlePool.prototype.draw = function (context, image) 
          // draw active particles
          if (firstActive < firstFree) 
            for (i = firstActive; i < firstFree; i++)
              particles[i].draw(context, image);
          
          if (firstFree < firstActive) 
            for (i = firstActive; i < particles.length; i++)
              particles[i].draw(context, image);
            for (i = 0; i < firstFree; i++) particles[i].draw(context, image);
          
        ;
        return ParticlePool;
      )();

      /*
       * Putting it all together
       */
      (function (canvas) 
        var context = canvas.getContext("2d"),
          particles = new ParticlePool(settings.particles.length),
          particleRate =
            settings.particles.length / settings.particles.duration, // particles/sec
          time;

        // get point on heart with -PI <= t <= PI
        function pointOnHeart(t) 
          return new Point(
            160 * Math.pow(Math.sin(t), 3),
            130 * Math.cos(t) -
              50 * Math.cos(2 * t) -
              20 * Math.cos(3 * t) -
              10 * Math.cos(4 * t) +
              25
          );
        

        // creating the particle image using a dummy canvas
        var image = (function () 
          var canvas = document.createElement("canvas"),
            context = canvas.getContext("2d");
          canvas.width = settings.particles.size;
          canvas.height = settings.particles.size;
          // helper function to create the path
          function to(t) 
            var point = pointOnHeart(t);
            point.x =
              settings.particles.size / 2 +
              (point.x * settings.particles.size) / 350;
            point.y =
              settings.particles.size / 2 -
              (point.y * settings.particles.size) / 350;
            return point;
          
          // create the path
          context.beginPath();
          var t = -Math.PI;
          var point = to(t);
          context.moveTo(point.x, point.y);
          while (t < Math.PI) 
            t += 0.01; // baby steps!
            point = to(t);
            context.lineTo(point.x, point.y);
          
          context.closePath();
          // create the fill
          context.fillStyle = "red";
          context.fill();
          // create the image
          var image = new Image();
          image.src = canvas.toDataURL();
          return image;
        )();

        // render that thing!
        function render() 
          // next animation frame
          requestAnimationFrame(render);

          // update time
          var newTime = new Date().getTime() / 1000,
            deltaTime = newTime - (time || newTime);
          time = newTime;

          // clear canvas
          context.clearRect(0, 0, canvas.width, canvas.height);

          // create new particles
          var amount = particleRate * deltaTime;
          for (var i = 0; i < amount; i++) 
            var pos = pointOnHeart(Math.PI - 2 * Math.PI * Math.random());
            var dir = pos.clone().length(settings.particles.velocity);
            particles.add(
              canvas.width / 2 + pos.x,
              canvas.height / 2 - pos.y,
              dir.x,
              -dir.y
            );
          

          // update and draw particles
          particles.update(deltaTime);
          particles.draw(context, image);
        

        // handle (re-)sizing of the canvas
        function onResize() 
          canvas.width = canvas.clientWidth;
          canvas.height = canvas.clientHeight;
        
        window.onresize = onResize;

        // delay rendering bootstrap
        setTimeout(function () 
          onResize();
          render();
        , 10);
      )(document.getElementById("pinkboard"));
    </script>
  </body>
</html>

好了,这就是全部爱心代码了

今天是三八女神节,无论是小妹妹还是大姐姐,我都想对我的同性说:生活处处充满美好,无论身处什么逆境,都应该往前看,一切都会过去的,我们女性大部分都会因为感情,学业,家庭的等困扰所影响,我一直觉得感情应该以佛系的态度看待,学业,努力向上我觉得就很幸福,自己想要的自己去努力争取,不去依附她人,做自己的女王,你就是这个世界最闪闪发光的人!!!

今天的分享就到此结束了

创作不易点赞评论互关三连

 

以上是关于让CSDN的浪漫弥漫女神节_Unity基础不动山不摇_回顾篇的主要内容,如果未能解决你的问题,请参考以下文章

520程序员的浪漫,给CSDN近两万的粉丝比心心(python爬虫 | Unity循环复用列表 | 头像加载与缓存)

520程序员的浪漫,给CSDN近两万的粉丝比心心(python爬虫 | Unity循环复用列表 | 头像加载与缓存)

女神节特辑 | 5%的故事,看见女性开发者的力量

女神节特辑 | 5%的故事,看见女性开发者的力量

程序员的浪漫,三步表白女神,成功率99%(程序员如何表白求婚)

程序人生程序员的浪漫,三步表白女神,成功率99%(程序员如何表白求婚)