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(); }
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); } }
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); } }
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); } }
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); } }
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); } } }