示例#1
0
        public override void Awake()
        {
            if (collider != null)
            {
                collider.CheckDropAxis();
                body = collider.connectedBody;
                if (body == null)
                {
                    body          = Physics.AddBody();
                    body.Position = VectorConverter.Convert(transform.position, collider.to2dMode);
                    body.Rotation = MathHelper.ToRadians(VectorConverter.Angle(transform.rotation.eulerAngles, collider.to2dMode));
                    body.UserData = collider;
                    collider.AddCollider(body, mass);
                }
                body.BodyType       = (isKinematic) ? BodyType.Kinematic : BodyType.Dynamic;
                body.Enabled        = gameObject.active;
                body.LinearDamping  = drag;
                body.AngularDamping = angularDrag;
                body.FixedRotation  = freezeRotation;
                RescaleMass();
                if (!isKinematic)
                {
                    Physics.AddRigidBody(body);
                }
            }
            else
            {
#if DEBUG
                Debug.LogWarning("No collider set on this rigid body " + ToString());
#endif
            }
        }
示例#2
0
    public override void OnRegister()
    {
        base.OnRegister();

        _playerBody = new VoxelRigidBody(WorldSettings.PlayerSettings.Radius,
                                         WorldSettings.PlayerSettings.Height,
                                         View.transform);
        //Register player to Physics
        Physics.AddRigidBody(_playerBody);

        //Reparent the camera under player
        var cameraTransform = ViewConfig.Camera3d.transform;

        cameraTransform.SetParent(View.CameraContainer);
        cameraTransform.localPosition = Vector3.zero;

        //Start PlayerController
        PlayerController.Init(_playerBody, View.CameraContainer, View.PlayerPick);
    }