Esempio n. 1
0
        private void Fall(MoveSystemNeededProperty entity)
        {
            var body    = entity.m_bodyProperty;
            var control = entity.m_controlProperty;

            ApplyForceUtils.AlignToVector(body[BodyPart.Head], body[BodyPart.Head].BodyTransform.forward,
                                          control.m_lookDirection, 0.1f, 20f);

            ApplyForceUtils.AlignToVector(body[BodyPart.Torso], body[BodyPart.Torso].BodyTransform.up,
                                          Vector3.up, 0.1f, 40f);
            ApplyForceUtils.AlignToVector(body[BodyPart.Torso], body[BodyPart.Torso].BodyTransform.forward,
                                          control.m_direction, 0.1f, 40f);

            ApplyForceUtils.AlignToVector(body[BodyPart.Hip], body[BodyPart.Hip].BodyTransform.up,
                                          Vector3.up, 0.1f, 20f);
            ApplyForceUtils.AlignToVector(body[BodyPart.Hip], body[BodyPart.Hip].BodyTransform.forward,
                                          control.m_direction, 0.1f, 20f);

            ApplyForceUtils.AlignToVector(body[BodyPart.LeftLeg], body[BodyPart.LeftLeg].BodyTransform.up,
                                          body[BodyPart.Hip].BodyTransform.up, 0.1f, 20f);
            ApplyForceUtils.AlignToVector(body[BodyPart.RightLeg], body[BodyPart.RightLeg].BodyTransform.up,
                                          body[BodyPart.Hip].BodyTransform.up, 0.1f, 20f);

            if (InputUtils.ValidMove(new Vector2(control.m_rawDirection.x, control.m_rawDirection.z)))
            {
                body[BodyPart.Torso].BodyRigid.AddForce(control.m_direction * 0.2f, ForceMode.VelocityChange);
            }
        }
Esempio n. 2
0
        private void Stand(MoveSystemNeededProperty entity)
        {
            var body    = entity.m_bodyProperty;
            var control = entity.m_controlProperty;
            var state   = entity.m_stateProperty;

            ApplyForceUtils.AlignToVector(body[BodyPart.Head], body[BodyPart.Head].BodyTransform.forward,
                                          control.m_lookDirection, 0.1f, 20f * control.m_applyForce, true);
            ApplyForceUtils.AlignToVector(body[BodyPart.Head], body[BodyPart.Head].BodyTransform.up,
                                          Vector3.up, 0.1f, 20f * control.m_applyForce, true);

            ApplyForceUtils.AlignToVector(body[BodyPart.Torso], body[BodyPart.Torso].BodyTransform.forward,
                                          control.m_direction, 0.1f, 40f * control.m_applyForce, true);
            ApplyForceUtils.AlignToVector(body[BodyPart.Torso], body[BodyPart.Torso].BodyTransform.up,
                                          Vector3.up, 0.1f, 40f * control.m_applyForce, true);

            ApplyForceUtils.AlignToVector(body[BodyPart.Hip], body[BodyPart.Hip].BodyTransform.forward,
                                          control.m_direction, 0.1f, 40f * control.m_applyForce, true);
            ApplyForceUtils.AlignToVector(body[BodyPart.Hip], body[BodyPart.Hip].BodyTransform.up,
                                          Vector3.up, 0.1f, 30f * control.m_applyForce, true);

            ApplyForceUtils.AlignToVector(body[BodyPart.LeftLeg], body[BodyPart.LeftLeg].BodyTransform.up,
                                          body[BodyPart.Hip].BodyTransform.up, 0.1f, 30f * control.m_applyForce);
            ApplyForceUtils.AlignToVector(body[BodyPart.RightLeg], body[BodyPart.RightLeg].BodyTransform.up,
                                          body[BodyPart.Hip].BodyTransform.up, 0.1f, 30f * control.m_applyForce);

            body[BodyPart.Torso].BodyRigid.AddForce(new Vector3(0, 4, 0) * control.m_applyForce, ForceMode.VelocityChange);
            body[BodyPart.Hip].BodyRigid.AddForce(new Vector3(0, -3.5f, 0) * control.m_applyForce, ForceMode.VelocityChange);

            body[BodyPart.Anchor].BodyRigid.angularVelocity = Vector3.zero;
        }
Esempio n. 3
0
        private void Run(MoveSystemNeededProperty neededProperty)
        {
            var state    = neededProperty.m_stateProperty;
            var control  = neededProperty.m_controlProperty;
            var movement = neededProperty.m_moveProperty;
            var body     = neededProperty.m_bodyProperty;

            if (control.m_run)
            {
                movement.m_cycleSpeed = 0.18f;
            }
            else
            {
                movement.m_cycleSpeed = 0.23f;
            }

            if (state.m_state != state.m_lastState)
            {
                if (Random.Range(0, 1) == 1)
                {
                    movement.m_leftLegPose  = Pose.Bent;
                    movement.m_rightLegPose = Pose.Straight;
                    movement.m_leftArmPose  = Pose.Straight;
                    movement.m_rightArmPose = Pose.Bent;
                }
                else
                {
                    movement.m_leftLegPose  = Pose.Straight;
                    movement.m_rightLegPose = Pose.Bent;
                    movement.m_leftArmPose  = Pose.Bent;
                    movement.m_rightArmPose = Pose.Straight;
                }
            }

            RunCycleUpdate(movement);
            RunCycleRotateAnchor(control, body);
            RunCycleMainBody(control, movement, body);

            RunCyclePoseLeg(Side.Left, movement.m_leftLegPose, control, body);
            RunCyclePoseLeg(Side.Right, movement.m_rightLegPose, control, body);
        }
Esempio n. 4
0
        private void Jump(MoveSystemNeededProperty entity)
        {
            var state   = entity.m_stateProperty;
            var control = entity.m_controlProperty;
            var body    = entity.m_bodyProperty;

            if (state.m_state != state.m_lastState)
            {
                float runFactor = control.m_run ? 0.4f : 0.2f;

                if (control.m_jump)
                {
                    Vector3 hipVelocity = body[BodyPart.Hip].BodyRigid.velocity;
                    if (hipVelocity.y < 2f)
                    {
                        body[BodyPart.Torso].BodyRigid.AddForce(control.m_direction * runFactor, ForceMode.VelocityChange);
                        body[BodyPart.Hip].BodyRigid.AddForce(control.m_direction * runFactor, ForceMode.VelocityChange);

                        float torsoY = body[BodyPart.Torso].BodyTransform.position.y;
                        float hipY   = body[BodyPart.Hip].BodyTransform.position.y;

                        if (torsoY > hipY)
                        {
                            Vector3 jumpForce = Vector3.up * 30f;
                            body[BodyPart.Torso].BodyRigid.AddForce(jumpForce, ForceMode.VelocityChange);
                            body[BodyPart.Hip].BodyRigid.AddForce(jumpForce, ForceMode.VelocityChange);
                        }
                        else
                        {
                            Vector3 jumpForce = Vector3.up * 15f;
                            body[BodyPart.Torso].BodyRigid.AddForce(jumpForce, ForceMode.VelocityChange);
                            body[BodyPart.Hip].BodyRigid.AddForce(jumpForce, ForceMode.VelocityChange);
                        }
                    }
                }
                control.m_jump = false;
            }

            if (InputUtils.ValidMove(new Vector2(control.m_rawDirection.x, control.m_rawDirection.z)))
            {
                body[BodyPart.Torso].BodyRigid.AddForce(Vector3.up * 2f, ForceMode.VelocityChange);
                body[BodyPart.Hip].BodyRigid.AddForce(Vector3.up * 2f, ForceMode.VelocityChange);

                ApplyForceUtils.AlignToVector(
                    body[BodyPart.Torso], body[BodyPart.Torso].BodyTransform.up,
                    Vector3.up, 0.1f, 10f);
                ApplyForceUtils.AlignToVector(
                    body[BodyPart.Torso], body[BodyPart.Torso].BodyTransform.forward,
                    control.m_direction + Vector3.down, 0.1f, 10f);
                ApplyForceUtils.AlignToVector(
                    body[BodyPart.Hip], body[BodyPart.Hip].BodyTransform.up,
                    Vector3.up, 0.1f, 10f);
                ApplyForceUtils.AlignToVector(
                    body[BodyPart.Hip], body[BodyPart.Hip].BodyTransform.forward,
                    control.m_direction + Vector3.up, 0.1f, 10f);

                ApplyForceUtils.AlignToVector(
                    body[BodyPart.LeftArm], body[BodyPart.LeftArm].BodyTransform.up,
                    body[BodyPart.Torso].BodyTransform.right + body[BodyPart.Torso].BodyTransform.forward,
                    0.1f, 4f);
                ApplyForceUtils.AlignToVector(
                    body[BodyPart.LeftElbow], body[BodyPart.LeftArm].BodyTransform.up,
                    body[BodyPart.Torso].BodyTransform.right - body[BodyPart.Torso].BodyTransform.forward,
                    0.1f, 4f);

                ApplyForceUtils.AlignToVector(
                    body[BodyPart.RightArm], body[BodyPart.RightArm].BodyTransform.up, -body[BodyPart.Torso].BodyTransform.right + body[BodyPart.Torso].BodyTransform.forward,
                    0.1f, 4f);
                ApplyForceUtils.AlignToVector(
                    body[BodyPart.RightElbow], body[BodyPart.RightElbow].BodyTransform.up, -body[BodyPart.Torso].BodyTransform.right - body[BodyPart.Torso].BodyTransform.forward,
                    0.1f, 4f);

                ApplyForceUtils.AlignToVector(
                    body[BodyPart.LeftLeg], body[BodyPart.LeftLeg].BodyTransform.up,
                    body[BodyPart.Hip].BodyTransform.up - body[BodyPart.Hip].BodyTransform.forward,
                    0.1f, 4f);
                ApplyForceUtils.AlignToVector(
                    body[BodyPart.RightLeg], body[BodyPart.RightLeg].BodyTransform.up,
                    body[BodyPart.Hip].BodyTransform.up - body[BodyPart.Hip].BodyTransform.forward,
                    0.1f, 4f);
            }
        }