public void Init(UnitData data) { //Debug.Log(data.name + " Init"); this.data = (UnitData)data.Clone(); name = this.data.name; if (this.data.isFriendly) { gameObject.layer = GameDatabase.friendlyLayer; } else { gameObject.layer = GameDatabase.enemyLayer; } deathable.Init(); animator.runtimeAnimatorController = this.data.controller; moveable.Init(this.data); moveable.enabled = true; if (attackable) { attackable.enabled = false; } if (this.data.weapon >= 0) { switch (GameDatabase.instance.weapons[this.data.weapon].type) { case ATTACK_TYPE.STOP_BEFORE: attackable = stopBeforeAttackable; break; case ATTACK_TYPE.STOP_AFTER: attackable = stopAfterAttackable; break; case ATTACK_TYPE.DONT_STOP: attackable = dontStopAttackable; break; } attackable.Init(this.data); attackable.enabled = true; } DisableTargetables(); if (this.data.isFriendly) { targetable = enemyTargetable; } else { targetable = friendlyTargetable; } targetable.enabled = true; DisableAutoMoveables(); switch (this.data.move) { case MOVE_TYPE.RANDOM: autoMoveable = randomMoveable; break; case MOVE_TYPE.RUSH: autoMoveable = rushMoveable; break; case MOVE_TYPE.REST_RUSH: autoMoveable = restRushMoveable; break; case MOVE_TYPE.FOLLOW: autoMoveable = followMoveable; break; case MOVE_TYPE.BOSS0: autoMoveable = boss0Moveable; break; default: autoMoveable = null; break; } if (autoMoveable) { autoMoveable.Init(this.data); autoMoveable.enabled = true; } hpable.Init(this.data.stat); mpable.Init(this.data.stat); hpable.enabled = true; mpable.enabled = true; timeLimitable.enabled = false; timeLimitable.Init(this.data.limitTime); followable.Init(this.data); orderable.Init(data.order); effectable.Init(); if (this.data.effects != null) { for (int i = 0; i < this.data.effects.Length; i++) { effectable.AddEffect(this.data.effects[i]); } } if (this.data.color == Color.clear) { renderer.color = Color.white; } else { renderer.color = this.data.color; } collider.isTrigger = false; collider.enabled = true; tackleable.Init(data); //그림자 세팅 this.shadow.Initialize(this.data.shadowZAngle, this.data.shadowXFlip, this.data.shadowPos); }
public void Init(Unit owner, BulletData data) { gameObject.SetActive(true); transform.rotation = Quaternion.identity; moveable.Init(); moveable.enabled = false; ownerable.SetOwner(owner); this.data = (BulletData)data.Clone(); name = this.data.name; if (owner.data.bulletColor == Color.clear) { renderer.color = data.color; } else { renderer.color = owner.data.bulletColor; } if (owner.data.bulletOrder != Order.Mid) { //Debug.Log(owner.name + "'s " + name + " sorting order is " + owner.data.bulletOrder); orderable.Init(owner.data.bulletOrder); } else { //Debug.Log(owner.name + "'s " + name + " sorting order is " + this.data.order); orderable.Init(this.data.order); } //Hitable if (hitable) { hitable.enabled = false; } switch (data.type) { case BULLET_TYPE.CIRCLE_CAST: hitable = hitableCircleCast; physics.enabled = false; break; case BULLET_TYPE.DYNAMIC_CIRCLE: case BULLET_TYPE.DYNAMIC_POLY: hitable = hitableTrigger; physics.enabled = true; break; case BULLET_TYPE.RAY_CAST: hitable = hitableRaycast; physics.enabled = false; break; default: break; } if (hitable) { hitable.Init(this.data); hitable.enabled = true; } animator.runtimeAnimatorController = this.data.controller; renderer.enabled = false; animator.enabled = false; deathCorou = null; timeLimitable.Init(this.data); timeLimitable.enabled = false; guideable.Init(this.data); guideable.enabled = false; disapearable.Init(this.data); spinable.Init(this.data); }