千锋教育

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 21|回复: 0

[京1903] 第一阶段学习总结BJ190143004

[复制链接]

3

主题

9

帖子

49

积分

菜鸟

Rank: 1

发表于 19-8-21 16:20:00 | 显示全部楼层 |阅读模式
前期的遇到的数学问题,最后通过各种研究、求证给实现出来了。
下面是我对“四元数”、“欧拉角”等问题以易懂的方式呈现:



东风谷早苗:「あら、この寒い中参拝に来たのですか?  (啊呀,这么冷的天气也来参拜吗?)」
                     「うふふ私もここでの挨拶の仕方を学びました (哦呵呵我也学会了这里的问候方式)」
                     「この幻想郷では常識に囚われてはいけないのですね!(在这个幻想乡不能被常识所束缚!)」





东方地灵殿  EX                奇迹「神秘果」 微信图片_20190429105653.gif


上图中,首先是一个8方向的圆形弹幕,当子弹到达目标点后,再在各自当前的点生成N波多方向的圆形弹幕,塞满大半个屏幕。其实现原理如下图:
东方地灵殿


通过上面的分析我们能很快得出,其实该弹幕就是不同角度以及不同位置圆形弹幕的组合使用。实现代码如下:
IEnumerator FirRoundGroup()
    {
        Vector3 bulletDir = firPoint.transform.up;
        Quaternion rotateQuate = Quaternion.AngleAxis(45, Vector3.forward);//使用四元数制造绕Z轴旋转45度的旋转
        List<BulletCharacter> bullets = new List<BulletCharacter>();       //装入开始生成的8个弹幕
        for (int i=0;i<8;i++)
        {
            var tempBullet = CreatBullet(bulletDir, firPoint.transform.position);
            bulletDir = rotateQuate * bulletDir; //生成新的子弹后,让发射方向旋转45度,到达下一个发射方向
            bullets.Add(tempBullet);
        }
        yield return new WaitForSeconds(1.0f);   //1秒后在生成多波弹幕
        for (int i = 0; i < bullets.Count; i++)
        {
            bullets.speed = 0; //弹幕停止移动
            StartCoroutine(FirRound(6, bullets.transform.position));//通过之前弹幕的位置,生成多波多方向的圆形弹幕。这里调用了上面写过的圆形弹幕函数
        }
    }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

订阅|小黑屋|手机版|千锋教育论坛 ( 京ICP备12003911号-3

GMT+8, 19-9-23 00:22 , Processed in 0.302037 second(s), 43 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表