Esempio n. 1
0
	public void Go(MeshExploder.MeshExplosionPreparation prep,
		float minSpeed, float maxSpeed, float minRotationSpeed, float maxRotationSpeed,
		bool useGravity, Vector3 scale) {
		
		preparation = prep;
		
		var frontTriangles = prep.totalFrontTriangles;
		triangleRotationAxes = new Vector3[frontTriangles];
		triangleSpeeds = new float[frontTriangles];
		triangleRotationSpeeds = new float[frontTriangles];
		
		var deltaSpeed = maxSpeed - minSpeed;
		var deltaRotationSpeed = maxRotationSpeed - minRotationSpeed;
		var fixedSpeed = minSpeed == maxSpeed;
		var fixedRotationSpeed = minRotationSpeed == maxRotationSpeed;
		
		this.useGravity = useGravity;
		explosionTime = 0;
		thisTransform = transform;
		
		for (var triangleNumber = 0; triangleNumber < frontTriangles; ++triangleNumber) {
			triangleRotationAxes[triangleNumber] = Random.onUnitSphere;
			triangleSpeeds[triangleNumber] = fixedSpeed ?
				minSpeed : minSpeed + Random.value * deltaSpeed;
			triangleRotationSpeeds[triangleNumber] = fixedRotationSpeed ?
				minRotationSpeed : minRotationSpeed + Random.value * deltaRotationSpeed;
		}
		
		GetComponent<MeshFilter>().mesh = mesh = (Mesh)Object.Instantiate(prep.startMesh);
		triangleCurrentCentroids = (Vector3[])prep.triangleCentroids.Clone();
		
		// It might seem like a waste of memory to keep a copy of these arrays, but actually
		// retrieving them allocates new garbage collected memory every time so it's much better to
		// just retrieve them once rather than retrieving them every frame and creating lots of
		// garbage.
		vertices = mesh.vertices;
		normals = mesh.normals;
		tangents = mesh.tangents;
		
		if (scale != Vector3.one) {
			{
				var n = vertices.Length;
				for (var i = 0; i < n; ++i) {
					vertices[i] = Vector3.Scale(vertices[i], scale);
				}
			}
			{
				var n = triangleCurrentCentroids.Length;
				for (var i = 0; i < n; ++i) {
					triangleCurrentCentroids[i] = Vector3.Scale(triangleCurrentCentroids[i], scale);
				}
			}
		}
		
		// Do one frame of explosion to start it off.
		Update();
	}
Esempio n. 2
0
 void Start()
 {
     player = TranscriptManager._instance.player.transform;
     me     = gameObject.GetComponentInChildren <MeshExploder>();
     InvokeRepeating("GetDistance", 0, 0.1f);
     atcArray         = transform.GetComponentsInChildren <BossAttackEffect>();
     bossBulletPrefab = Resources.Load <GameObject>("BossBullet");
     attack03Point    = transform.Find("attack03Point").gameObject;
     bloodPoint       = transform.Find("BloodPoint").transform;
     if (GameManger._instance.battleType == BattleType.Team && GameManger._instance.isMaster)
     {
         InvokeRepeating("SyncBossPostionRotation", 0, 1f / 30);
     }
 }
Esempio n. 3
0
 void Start()
 {
     player = TranscriptManager._instance.player.transform;
     me = gameObject.GetComponentInChildren<MeshExploder>();
     InvokeRepeating("GetDistance", 0, 0.1f);
     atcArray = transform.GetComponentsInChildren<BossAttackEffect>();
     bossBulletPrefab = Resources.Load<GameObject>("BossBullet");
     attack03Point = transform.Find("attack03Point").gameObject;
     bloodPoint = transform.Find("BloodPoint").transform;
     if (GameManger._instance.battleType == BattleType.Team && GameManger._instance.isMaster)
     {
         InvokeRepeating("SyncBossPostionRotation", 0, 1f / 30);
     }
 }
Esempio n. 4
0
    void Start()
    {
        bloodPoint  = transform.Find("BloodPoint").transform;
        hpPoint     = transform.Find("HpPoint").transform;
        cc          = this.GetComponent<CharacterController>();
        InvokeRepeating("GetCurrentDistance", 0, 0.1f);
        attackTimer = attackRate;
        hp = TotalHp;
        hpBar = HpBarManager._instance.GetHpBar(hpPoint.gameObject);
        damageHudText = HpBarManager._instance.GetHudText(hpPoint.gameObject);

        hpSlider = hpBar.GetComponentInChildren<UISlider>();
        hudText = damageHudText.GetComponent<HUDText>();
        me = gameObject.GetComponentInChildren<MeshExploder>();
        if (GameManger._instance.battleType == BattleType.Team && GameManger._instance.isMaster)
        {
            InvokeRepeating("AsyncEnemyPostionRotation", 0, 1f / 30);
            InvokeRepeating("CheckAnimation", 0, 1f / 30);
        }
    }
Esempio n. 5
0
    void Start()
    {
        bloodPoint = transform.Find("BloodPoint").transform;
        hpPoint    = transform.Find("HpPoint").transform;
        cc         = this.GetComponent <CharacterController>();
        InvokeRepeating("GetCurrentDistance", 0, 0.1f);
        attackTimer   = attackRate;
        hp            = TotalHp;
        hpBar         = HpBarManager._instance.GetHpBar(hpPoint.gameObject);
        damageHudText = HpBarManager._instance.GetHudText(hpPoint.gameObject);

        hpSlider = hpBar.GetComponentInChildren <UISlider>();
        hudText  = damageHudText.GetComponent <HUDText>();
        me       = gameObject.GetComponentInChildren <MeshExploder>();
        if (GameManger._instance.battleType == BattleType.Team && GameManger._instance.isMaster)
        {
            InvokeRepeating("AsyncEnemyPostionRotation", 0, 1f / 30);
            InvokeRepeating("CheckAnimation", 0, 1f / 30);
        }
    }
Esempio n. 6
0
    private void Hit()
    {
        RaycastHit hit;

        if (Physics.Raycast(armCamera.transform.position, armCamera.transform.forward, out hit, Utils.HugeFrappeReach))
        {
            MeshExploder meshExploder = hit.transform.gameObject.GetComponent <MeshExploder>();
            if (meshExploder)
            {
                meshExploder.Explode(hit.point, transform.forward);
            }
        }
        //TODO : WIP faut refactor ca
        if (Physics.Raycast(armCamera.transform.position, armCamera.transform.forward, out hit, Utils.HugeFrappeReach))
        {
            SpawnExploder meshExploder = hit.transform.gameObject.GetComponent <SpawnExploder>();
            if (meshExploder)
            {
                meshExploder.Explode(hit.point, transform.forward * 10f, 50f);
            }
        }
    }