示例#1
0
 /// <summary>
 /// On init, we grab our character type and playerID and store them for later
 /// </summary>
 protected override void Initialization()
 {
     base.Initialization();
     _savedCharacterType = _character.CharacterType;
     _savedPlayerID      = _character.PlayerID;
     _aiBrain            = this.gameObject.GetComponent <AIBrain>();
 }
示例#2
0
 /// <summary>
 /// On init, we grab our character type and playerID and store them for later
 /// </summary>
 protected override void Initialization()
 {
     base.Initialization();
     _savedCharacterType = _character.CharacterType;
     _savedPlayerID      = _character.PlayerID;
     _aiBrain            = _character.CharacterBrain;
 }
示例#3
0
        /// <summary>
        /// Adds all the possible components to a character
        /// </summary>
        protected virtual void GenerateCharacter(Character.CharacterTypes type, Modes mode)
        {
            Character character = (Character)target;

            Debug.LogFormat(character.name + " : Character Autobuild Start");

            if (type == Character.CharacterTypes.Player)
            {
                character.CharacterType = Character.CharacterTypes.Player;
                // sets the layer
                character.gameObject.layer = LayerMask.NameToLayer("Player");
                // sets the tag
                character.gameObject.tag = "Player";
                // sets the player ID
                character.PlayerID = "Player1";
            }

            if (type == Character.CharacterTypes.AI)
            {
                character.CharacterType = Character.CharacterTypes.AI;
                // sets the layer
                character.gameObject.layer = LayerMask.NameToLayer("Enemies");
            }

            if (mode == Modes.TwoD)
            {
                // Adds the rigidbody2D
                Rigidbody2D rigidbody2D = (character.GetComponent <Rigidbody2D>() == null) ? character.gameObject.AddComponent <Rigidbody2D>() : character.GetComponent <Rigidbody2D>();
                rigidbody2D.bodyType               = RigidbodyType2D.Dynamic;
                rigidbody2D.simulated              = true;
                rigidbody2D.useAutoMass            = false;
                rigidbody2D.mass                   = 1;
                rigidbody2D.drag                   = 1;
                rigidbody2D.angularDrag            = 0.05f;
                rigidbody2D.gravityScale           = 0;
                rigidbody2D.interpolation          = RigidbodyInterpolation2D.Interpolate;
                rigidbody2D.sleepMode              = RigidbodySleepMode2D.StartAwake;
                rigidbody2D.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
                rigidbody2D.constraints            = RigidbodyConstraints2D.FreezeRotation;

                SortingGroup sortingGroup = (character.GetComponent <SortingGroup>() == null) ? character.gameObject.AddComponent <SortingGroup>() : character.GetComponent <SortingGroup>();
                sortingGroup.sortingLayerName = "Characters";

                // Adds the boxcollider2D if needed
                BoxCollider2D boxcollider2D = (character.GetComponent <BoxCollider2D>() == null) ? character.gameObject.AddComponent <BoxCollider2D>() : character.GetComponent <BoxCollider2D>();
                boxcollider2D.isTrigger = false;

                // adds the top down controller 2D
                TopDownController2D topDownController2D = (character.GetComponent <TopDownController2D>() == null) ? character.gameObject.AddComponent <TopDownController2D>() : character.GetComponent <TopDownController2D>();
                topDownController2D.Gravity         = -30;
                topDownController2D.GroundLayerMask = LayerMask.GetMask("Ground");
                topDownController2D.HoleLayerMask   = LayerMask.GetMask("Hole");

                // adds 2D specific components
                if (character.GetComponent <CharacterOrientation2D>() == null)
                {
                    character.gameObject.AddComponent <CharacterOrientation2D>();
                }
                if (character.GetComponent <CharacterDash2D>() == null)
                {
                    character.gameObject.AddComponent <CharacterDash2D>();
                }
                if (character.GetComponent <CharacterJump2D>() == null)
                {
                    character.gameObject.AddComponent <CharacterJump2D>();
                }
            }

            if (mode == Modes.ThreeD)
            {
                // adds a capsule collider if needed
                CapsuleCollider capsuleCollider = (character.GetComponent <CapsuleCollider>() == null) ? character.gameObject.AddComponent <CapsuleCollider>() : character.GetComponent <CapsuleCollider>();
                capsuleCollider.isTrigger = true;

                // adds a character controller
                CharacterController characterController = (character.GetComponent <CharacterController>() == null) ? character.gameObject.AddComponent <CharacterController>() : character.GetComponent <CharacterController>();
                characterController.slopeLimit      = 45f;
                characterController.stepOffset      = 0.3f;
                characterController.skinWidth       = 0.08f;
                characterController.minMoveDistance = 0.001f;
                characterController.radius          = 0.5f;

                // adds a rigidbody
                Rigidbody rigidbody = (character.GetComponent <Rigidbody>() == null) ? character.gameObject.AddComponent <Rigidbody>() : character.GetComponent <Rigidbody>();
                rigidbody.mass                   = 1;
                rigidbody.drag                   = 0;
                rigidbody.angularDrag            = 0.05f;
                rigidbody.interpolation          = RigidbodyInterpolation.None;
                rigidbody.collisionDetectionMode = CollisionDetectionMode.Discrete;
                rigidbody.useGravity             = true;
                rigidbody.isKinematic            = true;

                // adds the top down controller 3D
                TopDownController3D topDownController3D = (character.GetComponent <TopDownController3D>() == null) ? character.gameObject.AddComponent <TopDownController3D>() : character.GetComponent <TopDownController3D>();
                topDownController3D.Gravity            = 40;
                topDownController3D.GroundLayerMask    = LayerMask.GetMask("Ground");
                topDownController3D.ObstaclesLayerMask = LayerMask.GetMask("Obstacles");

                // adds 3D specific components
                if (character.GetComponent <CharacterOrientation3D>() == null)
                {
                    character.gameObject.AddComponent <CharacterOrientation3D>();
                }
                if (character.GetComponent <CharacterCrouch>() == null)
                {
                    character.gameObject.AddComponent <CharacterCrouch>();
                }
                if (character.GetComponent <CharacterJump3D>() == null)
                {
                    character.gameObject.AddComponent <CharacterJump3D>();
                }
                if (character.GetComponent <CharacterDash3D>() == null)
                {
                    character.gameObject.AddComponent <CharacterDash3D>();
                }
            }

            // adds components common to 2D and 3D
            if (character.GetComponent <CharacterMovement>() == null)
            {
                character.gameObject.AddComponent <CharacterMovement>();
            }
            if (character.GetComponent <CharacterRun>() == null)
            {
                character.gameObject.AddComponent <CharacterRun>();
            }

            // adds (usually) player specific components
            if (type == Character.CharacterTypes.Player)
            {
                if (character.GetComponent <CharacterButtonActivation>() == null)
                {
                    character.gameObject.AddComponent <CharacterButtonActivation>();
                }
                if (character.GetComponent <CharacterPause>() == null)
                {
                    character.gameObject.AddComponent <CharacterPause>();
                }
                if (character.GetComponent <CharacterTimeControl>() == null)
                {
                    character.gameObject.AddComponent <CharacterTimeControl>();
                }
            }

            // adds health
            Health health = (character.GetComponent <Health>() == null) ? character.gameObject.AddComponent <Health>() : character.GetComponent <Health>();

            health.MaximumHealth = 100;
            health.CurrentHealth = 100;

            Debug.LogFormat(character.name + " : Character Autobuild Complete");
        }
示例#4
0
        /// <summary>
        /// Adds all the possible components to a character
        /// </summary>
        protected virtual void GenerateCharacter(Character.CharacterTypes type)
        {
            Character character = (Character)target;

            Debug.LogFormat(character.name + " : Character Autobuild Start");

            if (type == Character.CharacterTypes.Player)
            {
                character.CharacterType = Character.CharacterTypes.Player;
                // sets the layer
                character.gameObject.layer = LayerMask.NameToLayer("Player");
                // sets the tag
                character.gameObject.tag = "Player";
                // sets the player ID
                character.PlayerID = "Player1";
            }

            if (type == Character.CharacterTypes.AI)
            {
                character.CharacterType = Character.CharacterTypes.AI;
                // sets the layer
                character.gameObject.layer = LayerMask.NameToLayer("Enemies");
            }

            // Adds the rigidbody2D
            Rigidbody2D rigidbody2D = (character.GetComponent <Rigidbody2D>() == null) ? character.gameObject.AddComponent <Rigidbody2D>() : character.GetComponent <Rigidbody2D>();

            rigidbody2D.useAutoMass            = false;
            rigidbody2D.mass                   = 1;
            rigidbody2D.drag                   = 0;
            rigidbody2D.angularDrag            = 0.05f;
            rigidbody2D.gravityScale           = 1;
            rigidbody2D.interpolation          = RigidbodyInterpolation2D.None;
            rigidbody2D.sleepMode              = RigidbodySleepMode2D.StartAwake;
            rigidbody2D.collisionDetectionMode = CollisionDetectionMode2D.Discrete;
            rigidbody2D.isKinematic            = true;

            // Adds the boxcollider 2D
            BoxCollider2D boxcollider2D = (character.GetComponent <BoxCollider2D>() == null) ? character.gameObject.AddComponent <BoxCollider2D>() : character.GetComponent <BoxCollider2D>();

            boxcollider2D.isTrigger = true;

            // Adds the Corgi Controller
            CorgiController corgiController = (character.GetComponent <CorgiController>() == null) ? character.gameObject.AddComponent <CorgiController>() : character.GetComponent <CorgiController>();

            corgiController.PlatformMask                = LayerMask.GetMask("Platforms");
            corgiController.MovingPlatformMask          = LayerMask.GetMask("MovingPlatforms");
            corgiController.OneWayPlatformMask          = LayerMask.GetMask("OneWayPlatforms");
            corgiController.MovingOneWayPlatformMask    = LayerMask.GetMask("MovingOneWayPlatforms");
            corgiController.MidHeightOneWayPlatformMask = LayerMask.GetMask("MidHeightOneWayPlatforms");

            if (character.GetComponent <Health>() == null)
            {
                character.gameObject.AddComponent <Health>();
            }

            if (character.GetComponent <CharacterLevelBounds>() == null)
            {
                character.gameObject.AddComponent <CharacterLevelBounds>();
            }
            if (character.GetComponent <CharacterHorizontalMovement>() == null)
            {
                character.gameObject.AddComponent <CharacterHorizontalMovement>();
            }
            if (character.GetComponent <CharacterCrouch>() == null)
            {
                character.gameObject.AddComponent <CharacterCrouch>();
            }
            if (character.GetComponent <CharacterDash>() == null)
            {
                character.gameObject.AddComponent <CharacterDash>();
            }
            if (character.GetComponent <CharacterDive>() == null)
            {
                character.gameObject.AddComponent <CharacterDive>();
            }
            if (character.GetComponent <CharacterDangling>() == null)
            {
                character.gameObject.AddComponent <CharacterDangling>();
            }
            if (character.GetComponent <CharacterJump>() == null)
            {
                character.gameObject.AddComponent <CharacterJump>();
            }
            if (character.GetComponent <CharacterRun>() == null)
            {
                character.gameObject.AddComponent <CharacterRun>();
            }
            if (character.GetComponent <CharacterJetpack>() == null)
            {
                character.gameObject.AddComponent <CharacterJetpack>();
            }
            if (character.GetComponent <CharacterLookUp>() == null)
            {
                character.gameObject.AddComponent <CharacterLookUp>();
            }
            if (character.GetComponent <CharacterGrip>() == null)
            {
                character.gameObject.AddComponent <CharacterGrip>();
            }
            if (character.GetComponent <CharacterWallClinging>() == null)
            {
                character.gameObject.AddComponent <CharacterWallClinging>();
            }
            if (character.GetComponent <CharacterWalljump>() == null)
            {
                character.gameObject.AddComponent <CharacterWalljump>();
            }
            if (character.GetComponent <CharacterLadder>() == null)
            {
                character.gameObject.AddComponent <CharacterLadder>();
            }
            if (character.GetComponent <CharacterPause>() == null)
            {
                character.gameObject.AddComponent <CharacterPause>();
            }
            if (character.GetComponent <CharacterButtonActivation>() == null)
            {
                character.gameObject.AddComponent <CharacterButtonActivation>();
            }
            if (character.GetComponent <CharacterHandleWeapon>() == null)
            {
                character.gameObject.AddComponent <CharacterHandleWeapon>();
            }

            if (type == Character.CharacterTypes.AI)
            {
                // Adds Damage on touch
                DamageOnTouch damageOnTouch = (character.GetComponent <DamageOnTouch>() == null) ? character.gameObject.AddComponent <DamageOnTouch>() : character.GetComponent <DamageOnTouch>();
                damageOnTouch.TargetLayerMask = LayerMask.GetMask("Player");

                if (character.GetComponent <AIWalk>() == null)
                {
                    character.gameObject.AddComponent <AIWalk>();
                }
            }

            Debug.LogFormat(character.name + " : Character Autobuild Complete");
        }