// Use this for initialization void Start() { this.transform = GetComponent <Transform>(); //spriteRenderer = GetComponent<SpriteRenderer>(); //gameController = GameObject.FindGameObjectWithTag(Tags.Instance.tag_gameController); //layer = gameController.GetComponent<Layer>(); myPlatformCharacter = GetComponent <PlatformCharacterScript>(); // check movedirection (manual physics) rb2d = GetComponent <Rigidbody2D>(); // check movedirection (unity physics) bodyCollider = transform.Find(TagManager.Instance.name_body).GetComponent <BoxCollider2D>(); groundStopper = transform.Find(TagManager.Instance.name_groundStopper).GetComponent <BoxCollider2D>(); CalculateColliderEdges(); }
public void fillRootAndChildData(SmwCharacter characterSO, Teams teamId, SmwCharacterGenerics charGenerics) { float leftPos = -20f; // TODO inspector float rightPos = 20f; // TODO inspector float topPos = 15f; // TODO inspector float bottomPos = -15f; // TODO inspector Vector3 rootTransformPos = Vector3.zero; Vector3 centerTransformPos = rootTransformPos; Vector3 leftTransformPos = new Vector3(leftPos, 0f, 0f); Vector3 rightTransformPos = new Vector3(rightPos, 0f, 0f); Vector3 topTransformPos = new Vector3(0f, topPos, 0f); Vector3 bottomTransformPos = new Vector3(0f, bottomPos, 0f); Vector3 headTransformPos = new Vector3(0f, 0.3f, 0f); Vector3 feetTransformPos = new Vector3(0f, -0.3f, 0f); Vector3 bodyTransformPos = new Vector3(0f, 0f, 0f); //Vector3 itemCollectorTransformPos = new Vector3(0f,0f,0f); //Vector3 powerHitTransformPos = new Vector3(0f,0f,0f); Vector3 groundStopperTransformPos = new Vector3(0f, -0.25f, 0f); Vector3 kingTransformPos = new Vector3(0f, 0.6f, 0f); // Vector3 frictionEffectTransformPos = new Vector3(-0.42f, -0.42f, 0f); Vector2 headBoxSize = new Vector2(0.7f, 0.25f); //Vector2 feetBoxSize = new Vector2(0.7f,0.25f); Vector2 bodyBoxSize = new Vector2(0.7f, 0.8f); //Vector2 itemCollectorBoxSize = new Vector2(0.7f,0.8f); //Vector2 powerHitBoxSize = new Vector2(0.7f,0.8f); Vector2 groundStopperBoxSize = new Vector2(0.7f, 0.5f); Vector2 colliderOffSetCenter = Vector2.zero; Vector2 colliderOffSetLeft = new Vector2(leftPos, 0f); Vector2 colliderOffSetRight = new Vector2(rightPos, 0f); // Vector2 headBoxOffset; // use smartOffset // Vector2[] headBoxOffset = new Vector2[3]; // headBoxOffset [0] = colliderOffSetCenter; // headBoxOffset [1] = colliderOffSetLeft; // headBoxOffset [2] = colliderOffSetRight; Vector2[] smartComponentOffset = new Vector2[3]; smartComponentOffset[0] = colliderOffSetCenter; smartComponentOffset[1] = colliderOffSetLeft; smartComponentOffset[2] = colliderOffSetRight; bool headIsTrigger = true; //bool feetIsTrigger = true; bool bodyIsTrigger = false; //bool itemCollectorIsTrigger = true; //bool powerHitAreaIsTrigger = true; bool groundStopperIsTrigger = false; // root root = new ChildData(characterSO.charName, TagManager.Instance.tag_player, LayerManager.Instance.playerLayerName, centerTransformPos); //TODO Achtung PrefabName und Name können isch unterscheieden!!! root.Add(root.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_rootRenderer, charGenerics.rootRendererSortingLayer); Animator anim = root.Add(root.gameObject.AddComponent <Animator>(), true, characterSO.GetRuntimeAnimationController(teamId)); //TODO inspector // root.Add(root.gameObject.AddComponent<Rigidbody2D>(), 1f, true); //TODO inspector float gravityScale = 1f; float linearDrag = 3f; root.Add(root.gameObject.AddComponent <Rigidbody2D>(), gravityScale, RigidbodyConstraints2D.FreezeRotation, linearDrag); //TODO inspector root.Add(root.gameObject.AddComponent <AudioSource>(), true); //root.Add(root.gameObject.AddComponent<RealOwner>(), true); NetworkIdentity netIdScript = root.gameObject.AddComponent <NetworkIdentity> (); netIdScript.localPlayerAuthority = true; PlatformUserControl platformUserControl = root.gameObject.AddComponent <PlatformUserControl>(); PlatformCharacterScript platformCharScript = root.gameObject.AddComponent <PlatformCharacterScript>(); // build > 0.701 // add CharSO to CharPrefab platformCharScript.SetSmwCharacterSO(characterSO); root.Add(platformCharScript, true); root.Add(root.gameObject.AddComponent <PlatformJumperScript>(), false); // useUnityPhysics //root.Add(root.gameObject.AddComponent<Rage>(), true); //root.Add(root.gameObject.AddComponent<Shoot>(), true); //root.Add(root.gameObject.AddComponent<Shield>(), true); if (networked) { NetworkedPlayer netPlayerScript = root.gameObject.AddComponent <NetworkedPlayer> (); root.Add(netPlayerScript, true); netPlayerScript.AddBehaviour(platformCharScript); netPlayerScript.AddBehaviour(platformUserControl); NetworkAnimator netAnim = root.gameObject.AddComponent <NetworkAnimator> (); netAnim.animator = anim; NetworkTransform netTransform = root.gameObject.AddComponent <NetworkTransform> (); netTransform.transformSyncMode = NetworkTransform.TransformSyncMode.SyncRigidbody2D; netTransform.movementTheshold = (float)0.001f; netTransform.snapThreshold = 5f; float sendRate = 20.0f; // amount per seconds netTransform.sendInterval = 1.0f / sendRate; // time in seconds netTransform.syncRotationAxis = NetworkTransform.AxisSyncMode.None; //netTransform.syncRotationAxis = NetworkTransform.AxisSyncMode.AxisZ; netTransform.interpolateRotation = 1f; netTransform.rotationSyncCompression = NetworkTransform.CompressionSyncMode.High; } // root.Add(root.gameObject.AddComponent<NetworkView>(), true, netPlayerScript); //root.Add(root.gameObject.AddComponent<PushSkript>(), false); //root.Add(root.gameObject.AddComponent<Bot>(), false); // Clone Left ChildData child = new ChildData(TagManager.Instance.name_cloneLeft, TagManager.Instance.tag_player_clone, LayerManager.Instance.playerLayerName, leftTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_rootCloneRenderer, charGenerics.rootCloneRendererSortingLayer); child.Add(child.gameObject.AddComponent <CloneSpriteScript>(), true); childs.Add(child); // Clone Right child = new ChildData(TagManager.Instance.name_cloneRight, TagManager.Instance.tag_player_clone, LayerManager.Instance.playerLayerName, rightTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_rootCloneRenderer, charGenerics.rootCloneRendererSortingLayer); child.Add(child.gameObject.AddComponent <CloneSpriteScript>(), true); childs.Add(child); // Clone Top child = new ChildData(TagManager.Instance.name_CloneTop, TagManager.Instance.tag_player_clone, LayerManager.Instance.playerLayerName, topTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_rootCloneRenderer, charGenerics.rootCloneRendererSortingLayer); child.Add(child.gameObject.AddComponent <CloneSpriteScript>(), true); childs.Add(child); // Clone Bottom child = new ChildData(TagManager.Instance.name_CloneBottom, TagManager.Instance.tag_player_clone, LayerManager.Instance.playerLayerName, bottomTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_rootCloneRenderer, charGenerics.rootCloneRendererSortingLayer); child.Add(child.gameObject.AddComponent <CloneSpriteScript>(), true); childs.Add(child); // Head (cloned) child = new ChildData(TagManager.Instance.name_head, TagManager.Instance.tag_head, LayerManager.Instance.headLayerName, headTransformPos); child.Add(child.gameObject.AddComponent <BoxCollider2D>(), true, headBoxSize, smartComponentOffset, headIsTrigger, 3); childs.Add(child); //// Feet (cloned) child = new ChildData(TagManager.Instance.name_feet, TagManager.Instance.tag_player, LayerManager.Instance.feetLayerName, feetTransformPos); //child.Add(child.gameObject.AddComponent<BoxCollider2D>(), true, feetBoxSize, smartComponentOffset, feetIsTrigger, 3); //child.Add(child.gameObject.AddComponent<SendDamageTrigger>(),true); childs.Add(child); // Body (cloned) child = new ChildData(TagManager.Instance.name_body, TagManager.Instance.tag_body, LayerManager.Instance.bodyLayerName, bodyTransformPos); child.Add(child.gameObject.AddComponent <BoxCollider2D>(), true, bodyBoxSize, smartComponentOffset, bodyIsTrigger, 3); childs.Add(child); //// ItemCollector (cloned) //child = new ChildData (Tags.Instance.name_itemCollector, Tags.Instance.tag_itemCollector, Layer.Instance.itemLayerName, itemCollectorTransformPos); //child.Add(child.gameObject.AddComponent<BoxCollider2D>(), true, itemCollectorBoxSize, smartComponentOffset, itemCollectorIsTrigger, 3); //child.Add(child.gameObject.AddComponent<ItemCollectorScript>(),true); //childs.Add (child); //// PowerHitArea (cloned) //child = new ChildData (Tags.Instance.name_powerUpHitArea, Tags.Instance.tag_powerUpHitArea, Layer.Instance.powerUpLayerName, powerHitTransformPos); //child.Add(child.gameObject.AddComponent<BoxCollider2D>(), true, powerHitBoxSize, smartComponentOffset, powerHitAreaIsTrigger, 3); //child.Add(child.gameObject.AddComponent<RageTrigger>(),true); //childs.Add (child); // GroundStopper child = new ChildData(TagManager.Instance.name_groundStopper, TagManager.Instance.tag_groundStopper, LayerManager.Instance.groundStopperLayerName, groundStopperTransformPos); child.Add(child.gameObject.AddComponent <BoxCollider2D>(), true, groundStopperBoxSize, smartComponentOffset, groundStopperIsTrigger, 1); childs.Add(child); // King child = new ChildData(TagManager.Instance.name_king, TagManager.Instance.tag_body, LayerManager.Instance.defaultLayerName, kingTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), false, charGenerics.kingSprite, charGenerics.color_kingRenderer, charGenerics.kingRendererSortingLayer); childs.Add(child); // CurrentEstimatedPosOnServer child = new ChildData(TagManager.Instance.name_CurrentEstimatedPosOnServer, TagManager.Instance.tag_CurrentEstimatedPosOnServer, LayerManager.Instance.defaultLayerName, centerTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_currentEstimatedPosOnServer, charGenerics.currentEstimatedPosOnServerSortingLayer); childs.Add(child); // LastRecvedPos child = new ChildData(TagManager.Instance.name_lastReceivedPos, TagManager.Instance.tag_lastReceivedPos, LayerManager.Instance.defaultLayerName, centerTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_LastRecvedPos, charGenerics.lastRecvdPosRendererSortingLayer); childs.Add(child); // PredictedPosSimulatedWithLastInput child = new ChildData(TagManager.Instance.name_PredictedPosSimulatedWithLastInput, TagManager.Instance.tag_PredictedPosSimulatedWithLastInput, LayerManager.Instance.defaultLayerName, centerTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_PredictedPosSimulatedWithLastInput, charGenerics.preSimPosRendererSortingLayer); childs.Add(child); // PredictedPosCalculatedWithLastInput child = new ChildData(TagManager.Instance.name_PredictedPosCalculatedWithLastInput, TagManager.Instance.tag_PredictedPosCalculatedWithLastInput, LayerManager.Instance.defaultLayerName, centerTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, characterSO.GetSprites(teamId, SmwCharacterAnimation.Idle)[0], charGenerics.color_PredictedPosCalculatedWithLastInput, charGenerics.preCalclastRecvdPosRendererSortingLayer); childs.Add(child); // IceWalled child = new ChildData(TagManager.Instance.name_iceWalled, TagManager.Instance.tag_iceWalled, LayerManager.Instance.defaultLayerName, centerTransformPos); child.Add(child.gameObject.AddComponent <SpriteRenderer>(), true, null, charGenerics.color_iceWallRenderer, charGenerics.iceWalledRendererSortingLayer); child.Add(child.gameObject.AddComponent <Animator>(), true, charGenerics.iceWandAnimatorController); childs.Add(child); // Friction Effect with Prefav GameObject frictionEffectChildGO = GameObject.Instantiate(charGenerics.frictionSmokeTrailPrefab); frictionEffectChildGO.transform.SetParent(root.gameObject.transform); frictionEffectChildGO.name = TagManager.Instance.name_frictionEffect; platformCharScript.FrictionSmoke = frictionEffectChildGO.GetComponent <ParticleSystem> (); // Friction Effect manual creation // child = new ChildData (TagManager.Instance.name_frictionEffect, TagManager.Instance.tag_frictionEffect, LayerManager.Instance.defaultLayerName, frictionEffectTransformPos); // foreach (Component c in charGenerics.frictionSmokeTrailPrefab.GetComponents()) { // child.Add(child.gameObject.AddComponent(c)); // } }