Example #1
0
        public override void Act(StateController controller, ActionData actionData)
        {
            Slime slime = controller.GetComponent <Slime>();

            // TODO Only split when grounded & not moving? Must then be in Act()... but only split once!
            if (slime != null && controller.inputManager.currentTarget != null && controller.inputManager.IsGrounded() && Mathf.Abs(controller.GetComponent <Rigidbody>().velocity.x) < 0.1 && Mathf.Abs(controller.GetComponent <Rigidbody>().velocity.z) < 0.1)
            {
                controller.transform.LookAt(controller.inputManager.currentTarget.transform);                      // TODO HACK: Better smoothly turn towards target!
                Vector3 requiredForce =
                    slime.CalculateSplitForceNeeded(controller.inputManager.currentTarget.transform.position, 60); // HACK NIET WORKING WRONG DIRECTION

                if (!float.IsNaN(requiredForce.x) && !float.IsNaN(requiredForce.y) && !float.IsNaN(requiredForce.z))
                {
                    requiredForce.x *= -1;            // HACK
                    requiredForce.z *= -1;            // HACK
                    requiredForce   *= slime.rb.mass * 3;
                    slime.rb.AddForce(requiredForce); // HACK NIET WORKING
                }
            }
        }
Example #2
0
        public override void Act(StateController controller, ActionData actionData)
        {
            Slime slime = controller.GetComponent <Slime>();

            // TODO Only split when grounded & not moving? Must then be in Act()... but only split once!
            if (slime != null && controller.inputManager.currentTarget != null && controller.inputManager.IsGrounded() && Mathf.Abs(controller.GetComponent <Rigidbody>().velocity.x) < 0.1 && Mathf.Abs(controller.GetComponent <Rigidbody>().velocity.z) < 0.1 && ((actionData.objectData.ContainsKey("SplitDone") && !Convert.ToBoolean(actionData.objectData["SplitDone"])) || !actionData.objectData.ContainsKey("SplitDone")))
            {
                controller.transform.LookAt(controller.inputManager.currentTarget.transform); // TODO HACK: Better smoothly turn towards target!
                Vector3 requiredForce =
                    slime.CalculateSplitForceNeeded(controller.inputManager.currentTarget.transform.position);
                slime.SplitSlime(requiredForce);

                if (actionData.objectData.ContainsKey("SplitDone"))
                {
                    actionData.objectData["SplitDone"] = true;
                }
                else
                {
                    actionData.objectData.Add("SplitDone", true);
                }
            }
        }