public void Update() { this._curInterval += Time.deltaTime; this._curTime += Time.deltaTime; if (this._curTime >= this._data.Dur) { this.DoCallbacks(); GameObject.Destroy(this); } else { if (this._curInterval >= this._data.Interval) { this._curInterval = 0; var swarm = new GameObject(); this._data.Swarm.Add(swarm); var renderer = swarm.AddComponent <SpriteRenderer>(); renderer.sprite = this._data.Sprite; swarm.transform.position = RandomPositionOffset.RandomOffset( this._data.Target, this._data.MaxOffset); renderer.sortingLayerName = SortingLayers.PARTICLES; renderer.sortingOrder--; var raycastData = new SRaycastMoveData(); raycastData.Epsilon = 0.05f; raycastData.Handle = swarm; raycastData.Speed = 8f; raycastData.Target = RandomPositionOffset.RandomOffset( this._data.Target, 0.3f); var raycast = swarm.AddComponent <SRaycastMove>(); raycast.Init(raycastData); } } }
public void Init(GameObject source, CChar character) { this._handle = source; var sourceTile = character.Tile; var landTile = character.Tile.GetRandomNearbyTile(5); var pos = RandomPositionOffset.RandomOffset(landTile.Center, CombatGUIParams.DEFAULT_OFFSET); var data = new SRaycastMoveData(); data.Epsilon = FatalityParams.DEFAULT_EPSILON; data.Handle = source; data.Speed = FatalityParams.FIGHTING_SPEED; data.Target = pos; var move = source.AddComponent <SRaycastMove>(); RotateTranslateUtil.Instance.RandomRotate(source); move.AddCallback(this.SetDeadLayer); move.Init(data); source.transform.SetParent(landTile.Handle.transform); }
private void DisplayDodge(CChar target, MHit hit) { var dodge = target.GameHandle.AddComponent <SBoomerang>(); var dodgeTgt = ListUtil <CTile> .GetRandomElement(target.Tile.GetAdjacent()); var position = Vector3.Lerp(target.GameHandle.transform.position, dodgeTgt.Model.Center, CombatGUIParams.DODGE_LERP); position = RandomPositionOffset.RandomOffset(position, CombatGUIParams.DEFAULT_OFFSET); dodge.AddCallback(hit.CallbackHandler); dodge.Init(target.GameHandle, position, CombatGUIParams.DODGE_SPEED); var data = new HitDisplayData(); data.Color = CombatGUIParams.WHITE; data.Hit = hit; data.Priority = ViewParams.DODGE_PRIORITY; data.Text = "Dodge"; data.Target = target.GameHandle; data.YOffset = CombatGUIParams.FLOAT_OFFSET; data.Hit.AddDataDisplay(data); }
private void ProcessHead(object o) { foreach (var hit in this._data.FatalHits) { if (hit.Data.Target.Current != null && hit.Data.Target.Current.GetType().Equals(typeof(CChar))) { var tgt = this._data.Target.Current as CChar; if (tgt.Proxy.Type == ECharType.Humanoid) { VCharUtil.Instance.ProcessDeadChar(tgt); var body = tgt.SubComponents[SortingLayers.CHAR_MAIN]; var data = new EvSplatterData(); data.DmgPercent = 1; data.Fatality = true; data.Target = body; new EvSplatter(data); var head = tgt.SubComponents[SortingLayers.CHAR_HEAD]; var tgtTile = tgt.Tile; var tgtPos = RandomPositionOffset.RandomOffset( tgtTile.Handle.transform.position, FatalityParams.SLASH_HEAD_OFFSET); head.transform.SetParent(tgtTile.Handle.transform); var spinData = new SRotationData(); spinData.Speed = (float)(FatalityParams.SLASH_ROTATION_SPEED * RNG.Instance.NextDouble()); spinData.Target = head; var spinRight = RNG.Instance.RandomNegOrPos(); if (spinRight > 0) { spinData.SpinRight = true; } var spin = head.AddComponent <SRotation>(); spin.Init(spinData); var raycastData = new SRaycastMoveData(); raycastData.Epsilon = FatalityParams.DEFAULT_EPSILON; raycastData.Handle = head; raycastData.Speed = FatalityParams.SLASH_RAYCAST_SPEED; raycastData.Target = tgtPos; var raycast = head.AddComponent <SRaycastMove>(); this.AttachBlood(head, tgt.GameHandle); raycast.AddCallback(this.AddBloodPool); raycast.AddCallback(spin.Done); var callbackDelay = head.AddComponent <SDelayCallback>(); callbackDelay.AddCallback(this.CallbackHandler); callbackDelay.AddCallback(hit.CallbackHandler); callbackDelay.Init(FatalityParams.DEFAULT_DUR); raycast.Init(raycastData); } else { VHitController.Instance.ProcessDefenderHit(hit); } } } }