• unity 模仿东方弹幕游戏


    首先感谢我们组的两位大佬,认真负责又很有耐心地指导我们,跟着他们学到了不少东西。

    先设计好初稿,然后再分析实现步骤,比如列出数学物理公式,最后就是编码实现阶段了。下面是我的代码:

    BulletCenterDance:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class BulletCenterDance : BulletTypeB {
    
        public Vector2 Valocity;
    	
    	// Update is called once per frame
    	void Update () {
            transform.Translate(Valocity * Time.deltaTime);
    	}
    }
    
    

    RevolveCircle:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class RevolveCircle : SpellCard {
    
    	public RevolveCircle() : base(new Circle(), new Vector2(-1.5f, 2.4f), 78f, 15000, "想起「旋转圆舞」 ")
    	{
    	}
    }
    
    class Circle : State<Boss>{
    	float time = 2f;
    	float timeC = 4f;
    	float t = -4f;
    	GameObject Revolve;
    	public override void Enter(Boss owner)
    	{
    		Revolve  = ((Satori)owner).RevolveCircleResources.GetComponent<RevolveCircleResource>().RevolveCircle;
    		owner.transform.position = new Vector3(-1.53f, 0, 0);
    	}
    	public override void Execute(Boss owner)
    	{
    		timeC -= Time.deltaTime;
    		time -= Time.deltaTime;
    		t += Time.deltaTime;
    		if (time < 0) {
    			time += 0.1f;
    			Vector2 StartLo;
    			if (GameManager.player != null) {
    				StartLo = GameManager.player.transform.position - owner.transform.position;
    			} else {
    				StartLo = new Vector2 (0, 1);
    			}
    			StartLo.Normalize ();
    			for (int i = -1; i <= 1; i++) {
    				float routeAngle = 30 * Mathf.Deg2Rad * i;
    				Vector2 valocity = new Vector2(StartLo.x*Mathf.Cos(routeAngle)-StartLo.y*Mathf.Sin(routeAngle),StartLo.x*Mathf.Sin(routeAngle)+StartLo.y*Mathf.Cos(routeAngle));
    				valocity *= 3.0f;
    				BulletCenterDance c = GameObject.Instantiate (((Satori)owner).RevolveCircleResources.GetComponent<RevolveCircleResource> ().RevolveCircle, owner.transform.position, Quaternion.identity).GetComponent<BulletCenterDance> ();
    				c.Valocity = valocity;
    				GameObject.Destroy (c.gameObject, 5f);
    			}
    
    
    
    		}
    		if (timeC<0) {
    			timeC += 0.3f;
    			for (int i = 0; i < 4; i++) {
    				Vector2 StartLocation = new Vector2 (Mathf.Cos (t), Mathf.Sin (t));
    				Vector2 valocity = new Vector2 (2f * Mathf.Cos (2f * t + i * Mathf.PI / 2), 2f * Mathf.Sin (2f * t + i * Mathf.PI / 2));
    				BulletCenterDance r = GameObject.Instantiate (((Satori)owner).RevolveCircleResources.GetComponent<RevolveCircleResource> ().BulletTriangle, owner.transform.position + (Vector3)StartLocation, Quaternion.identity).GetComponent<BulletCenterDance> ();
    				r.Valocity = valocity;
    				GameObject.Destroy (r.gameObject, 10f);
    			}
    			for (int i = 0; i < 4; i++) {
    				Vector2 StartLocation = new Vector2 (-Mathf.Cos (t), Mathf.Sin (t));
    				Vector2 valocity = new Vector2 (-2f * Mathf.Cos (2f * t + i * Mathf.PI / 2), 2f * Mathf.Sin (2f * t + i * Mathf.PI / 2));
    				BulletCenterDance r = GameObject.Instantiate (((Satori)owner).RevolveCircleResources.GetComponent<RevolveCircleResource> ().BulletTriangle, owner.transform.position + (Vector3)StartLocation, Quaternion.identity).GetComponent<BulletCenterDance> ();
    				r.Valocity = valocity;
    				GameObject.Destroy (r.gameObject, 10f);
    			}
    		}
    	}
    			
    
    
    }
    
    
    
    

    RevolveCircleResources:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class RevolveCircleResource : MonoBehaviour {
    
    	public GameObject RevolveCircle; //
    	public GameObject BulletTriangle; //
    	// Use this for initialization
    	void Start () {
    		
    	}
    	
    	// Update is called once per frame
    	void Update () {
    		
    	}
    }
    
    
    
  • 相关阅读:
    06-图3 六度空间
    06-图2 Saving James Bond
    06-图1 列出连通集
    05-树9 Huffman Codes
    数据结构学习笔记04树(堆 哈夫曼树 并查集)
    05-树8 File Transfer
    05-树7 堆中的路径
    十天学会单片机Day1点亮数码管(数码管、外部中断、定时器中断)
    设计模式—— 四:接口隔离原则
    设计模式—— 一:单一职责原则
  • 原文地址:https://www.cnblogs.com/1997Ff/p/7498400.html
Copyright © 2020-2023  润新知