Beispiel #1
0
        protected override void Start()
        {
            m_InputOverride = baseInput_ = GetComponent <CyanEmuBaseInput>();
            eventSystem.sendNavigationEvents = false;

            base.Start();
        }
        private void OnGUI()
        {
            Vector2 center   = CyanEmuBaseInput.GetScreenCenter();
            Vector2 size     = new Vector2(reticleTexture_.width, reticleTexture_.height);
            Rect    position = new Rect(center - size * 0.5f, size);

            GUI.DrawTexture(position, reticleTexture_);
        }
Beispiel #3
0
        private void Awake()
        {
            if (instance != null)
            {
                this.LogError("Player controller instance already exists!");
                DestroyImmediate(this);
                return;
            }

#if VRC_SDK_VRCSDK2
            legacyLocomotion_ = true;
#endif

            instance         = this;
            descriptor_      = FindObjectOfType <VRC_SceneDescriptor>();
            gameObject.layer = LayerMask.NameToLayer("PlayerLocal");
            gameObject.tag   = "Player";

            rigidbody_             = gameObject.AddComponent <Rigidbody>();
            rigidbody_.isKinematic = true;

            characterController_                 = gameObject.AddComponent <CharacterController>();
            characterController_.slopeLimit      = 50;
            characterController_.stepOffset      = .5f;
            characterController_.skinWidth       = 0.005f;
            characterController_.minMoveDistance = 0;
            characterController_.center          = new Vector3(0, 0.8f, 0);
            characterController_.radius          = 0.2f;
            characterController_.height          = 1.6f;


            GameObject capsule = GameObject.CreatePrimitive(PrimitiveType.Capsule);
            capsule.transform.localScale = new Vector3(0.4f, 1, 0.4f);
            capsule.transform.SetParent(transform, false);
            capsule.transform.localPosition = new Vector3(0, 1, 0);
            capsule.layer = LayerMask.NameToLayer("MirrorReflection");
            DestroyImmediate(capsule.GetComponent <Collider>());


            playerCamera_ = new GameObject("Player Camera");
            GameObject cameraHolder = new GameObject("CameraHolder");
            cameraHolder.transform.SetParent(playerCamera_.transform, false);
            camera_               = cameraHolder.AddComponent <Camera>();
            camera_.cullingMask  &= ~(1 << 18); // remove mirror reflection
            updateStancePosition_ = false;

            // TODO, make based on avatar armspan/settings
            cameraHolder.transform.localScale = Vector3.one * AVATAR_SCALE_;

            playerCamera_.AddComponent <AudioListener>();
            playerCamera_.transform.SetParent(transform, false);
            playerCamera_.transform.localPosition = new Vector3(0, STANDING_HEIGHT_, .1f);
            playerCamera_.transform.localRotation = Quaternion.identity;

            playspace_ = new GameObject("Playspace Center");
            playspace_.transform.SetParent(transform, false);
            playspace_.transform.localPosition = new Vector3(-1, 0, -1);
            playspace_.transform.localRotation = Quaternion.Euler(0, 45, 0);

            rightArmPosition_ = new GameObject("Right Arm Position");
            rightArmPosition_.transform.SetParent(playerCamera_.transform, false);
            rightArmPosition_.transform.localPosition = new Vector3(0.15f, -0.13f, 0.4f);
            rightArmPosition_.transform.localRotation = Quaternion.Euler(-35, 0, -90);
            rightArmRigidbody_             = rightArmPosition_.AddComponent <Rigidbody>();
            rightArmRigidbody_.isKinematic = true;

            leftArmPosition_ = new GameObject("Left Arm Position");
            leftArmPosition_.transform.SetParent(playerCamera_.transform, false);
            leftArmPosition_.transform.localPosition = new Vector3(-0.15f, -0.13f, 0.4f);
            leftArmPosition_.transform.localRotation = Quaternion.Euler(-35, 0, -90);
            leftArmRigidbody_             = leftArmPosition_.AddComponent <Rigidbody>();
            leftArmRigidbody_.isKinematic = true;

            mouseLook_ = new MouseLook();
            mouseLook_.Init(transform, playerCamera_.transform);

            stance_ = Stance.STANDING;

            baseInput_ = transform.parent.gameObject.GetComponent <CyanEmuBaseInput>();
            CreateMenu();

            GameObject interactHelper = new GameObject("InteractHelper");
            interactHelper.transform.SetParent(transform.parent, false);
            interactHelper_ = interactHelper.AddComponent <CyanEmuInteractHelper>();
            Func <bool> shouldCheckForInteracts = () => { return(currentPickup_ == null && !menu_.activeInHierarchy && !isDead_); };
            interactHelper_.Initialize(playerCamera_.transform, playerCamera_.transform, shouldCheckForInteracts);

            reticleTexture_ = Resources.Load <Texture2D>("Images/Reticle");

            cameraProxyObject_ = new GameObject("CameraDamageProxy").transform;
            cameraProxyObject_.SetParent(CyanEmuMain.GetProxyObjectTransform(), false);
            UpdateCameraProxyPosition();

            // experimental!
            //interactHelper_.highlightManager = playerCamera_.AddComponent<VRCP_HighlightManager>();
        }