示例#1
0
    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);
    }
示例#2
0
    // 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);
    }
示例#3
0
    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);
    }
示例#4
0
    // 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();
        }
    }