public bool ExitShadowMode(GameObject target = null) { if (characterStatus != StatusType.isShadow) { return(false); } // Offset the player out of the wall, just in case transform.position += .5f * groundHit.normal; characterStatus = StatusType.IsWalking; _capsuleCollider.height = 1.9f; _capsuleCollider.center = new Vector3(0, 0.96f, 0); targetProjector.SetActive(false); transform.GetChild(1).gameObject.SetActive(true); staminaBar.transform.parent.gameObject.SetActive(false); charCamera = FindObjectOfType <VKThirdPersonCamera>(); charCamera.SetTarget(this.gameObject, 1f); charCamera.height = 1.4f; transform.up = Vector3.up; transform.forward = Vector3.Cross(charCamera.transform.right, Vector3.up).normalized; Physics.IgnoreLayerCollision(8, 8, false); Physics.gravity = nGravity; _rigidbody.velocity = new Vector3(0, 0, 0); // FULL STAMINA REGEN ON EXIT stamina = maxStamina; return(true); }
// Use this for initialization public void Init() { Physics.gravity = nGravity; playerSpeed = walkSpeed; characterStatus = StatusType.IsWalking; staminaValue = staminaBar.GetComponent <Image>(); staminaBar.transform.parent.gameObject.SetActive(false); charCamera = FindObjectOfType <VKThirdPersonCamera>(); _animator = GetComponent <Animator>(); _rigidbody = GetComponent <Rigidbody>(); _capsuleCollider = GetComponent <CapsuleCollider>(); // Create and set the projector for the shadow. targetProjector = new GameObject("VKProjectorShadow"); targetProjector.transform.position = this.transform.position + 2 * this.transform.up; targetProjector.transform.SetParent(this.transform); targetProjector.AddComponent <Projector>(); targetProjector.transform.eulerAngles = new Vector3(90, 0, 0); targetProjector.GetComponent <Projector>().material = projectorMaterial; targetProjector.GetComponent <Projector>().fieldOfView = 30; targetProjector.GetComponent <Projector>().nearClipPlane = 1.9f; targetProjector.GetComponent <Projector>().farClipPlane = 3f; targetProjector.SetActive(false); }
public bool EnterShadowMode(GameObject target) { if (characterStatus != StatusType.IsWalking) { return(false); } // Adding a little fix to improve rotation, fix this in future patches characterStatus = StatusType.isShadow; _capsuleCollider.height = _capsuleCollider.radius; _capsuleCollider.center = new Vector3(0, _capsuleCollider.radius, 0); transform.forward = Vector3.Cross(-charCamera.transform.right, Physics.gravity).normalized; targetProjector.SetActive(true); transform.GetChild(1).gameObject.SetActive(false); staminaBar.transform.parent.gameObject.SetActive(true); charCamera = FindObjectOfType <VKThirdPersonCamera>(); charCamera.SetTarget(target, 1f); charCamera.height = .5f; Physics.IgnoreLayerCollision(8, 8, true); return(true); }
// Use this for initialization void Start() { // Initialization player variables Cursor.visible = false; charCamera = FindObjectOfType <VKThirdPersonCamera>(); charController = GetComponent <VKThirdPersonController>(); charShadowController = FindObjectOfType <VKShadowController>(); if (charController) { charController.Init(); } if (charCamera) { charCamera.Init(this.gameObject); } if (charShadowController) { charShadowController.Init(); } }