美文网首页
2020-04-30【MixAndJam】项目学习

2020-04-30【MixAndJam】项目学习

作者: 持刀的要迟到了 | 来源:发表于2020-05-05 17:20 被阅读0次

    FFVII-TacticalMode

    VFX实现的火花特效

    Smash-CSS

    Superhot-BulletTime

    实现了子弹时间,以及肢体破碎效果。

    • 肢体破碎:
      1.破碎的肢体上挂载一个脚本,当子弹OnCollisionEnter时,取到打中的这个部件,让它隐藏掉(不是让它消失,因为后面会给它一个力让它产生爆炸效果),并根据预制体创建出相同的物体。
      2.获得这个创建出物体上所有Rigidbody,给它们添加爆炸的力
            foreach(Rigidbody r in rbs)
            {
                r.interpolation = RigidbodyInterpolation.Interpolate;
                r.AddExplosionForce(15, transform.position, 5);
            }
    
            rb.AddExplosionForce(15, transform.position, 5);
    
    • Ragdoll
      获得骨骼刚体,设置isKinematic = false即可。( r.interpolation = RigidbodyInterpolation.Interpolate;)

    RDR-DeadEye

    • 右键瞄准屏幕变色(后处理方式 + DOTween.DOVirtual)
      右击事件,执行一次DOVirtual(from, to, time, Callback(float));
      变色:PostProcessProfile.GetSetting<ColorGrading>().colorFilter.value
    • 获得目标点在屏幕上的位置,实时更新图标
      Camera.main.WorldToScreenPoint(target.position);
    • 依次射击目标点(DOTween.Sequence,类似行为树节点)
        for (int i = 0; i < targets.Count; i++)
        {
            s.Append(transform.DOLookAt(targets[i].GetComponentInParent<EnemyScript>().transform.position, .05f).SetUpdate(true));
            s.AppendCallback(() => anim.SetTrigger("fire"));
            int x = i;
            s.AppendInterval(.05f);
            s.AppendCallback(()=>FirePolish());
            s.AppendCallback(() => targets[x].GetComponentInParent<EnemyScript>().Ragdoll(true, targets[x]));
            s.AppendCallback(() => crossList[x].GetComponent<Image>().color = Color.clear);
            s.AppendInterval(.35f);
        }
        s.AppendCallback(() => Aim(false));
        s.AppendCallback(() => DeadEye(false));
    
    • 给刚体加一个射击方向的力
      point.GetComponent<Rigidbody>().AddForce(shooter.transform.forward * 30, ForceMode.Impulse);

    Pokemon-Capture

    播片,宝可梦法球

    Overwatch-Dragonstrike

    龙柱特效

    MonumentValley-LevelDesign

    较为复杂,先跳过


    MGR-BladeMode

    用到了一个切割插件EasySlice,切割传递的参数是要切割的物体和切割用的plane面片

    • Physics.Overlap来模拟plane面片是否碰到物体

    KingdomHearts-ShotLock

    • 通过CapsuleCollider的OnTriggerEnter检测新的东西
    • 螺旋炮弹的飞行方式:
      1.沿着自己的y轴向作转圈运动
          transform.eulerAngles += Vector3.forward * Time.deltaTime;
          transform.position += transform.up * Time.deltaTime;
      
      2.朝向目标旋转飞行
      炮弹的构成是一共三层:最外层作为碰撞的本体,朝着目标直直飞过去;第二层控制本地旋转,来旋转拖尾;第三层则将localPosition的Y值调出去,这样就可以朝着目标旋转飞行了。
            var targetRotation = Quaternion.LookRotation(target.transform.position - transform.position);
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, .5f);
            //transform.LookAt(target.position);
            transform.position += transform.forward * Time.deltaTime * (movementSpeed * multiplier);
            transform.GetChild(0).eulerAngles += Vector3.forward * Time.deltaTime * rotationSpeed * 1.5f;
      
      transform.GetChild(0).GetChild(0).DOLocalMoveY(5, 1f);

    GodofWar-AxeThrow

    • Throw
      1.自身旋转:transform.localEulerAngles += V3.forward * rotattionSpeed * Time.deltaTime;

    • Pullback
      1.二阶贝塞尔曲线(见之前文章)
      2.Cinemachine Shake:CinemachineImpulseSource.GenerateImpulse(Vector3.right);

    相关文章

      网友评论

          本文标题:2020-04-30【MixAndJam】项目学习

          本文链接:https://www.haomeiwen.com/subject/qmhtghtx.html