void Awake() { if (_actor == null) { _actor = this.GetComponent <Actor>(); } _gameObject = _actor.gameObject; _actor_Data = _actor._ActorData; _transform = _actor.gameObject.transform; _headTransfrom = _actor._Bone_Head; _rigidbody = _actor.gameObject.GetComponent <Rigidbody>(); _colliderCapsule = _actor.gameObject.GetComponent <CapsuleCollider>(); _colliderTransform = _colliderCapsule.transform; _colliderYbounds = _colliderCapsule.bounds.extents.y; //bounding box distance from center to box _colliderCenter = _colliderCapsule.center; _State_MovementSpeed = State_MovementSpeed.walkSpeed; _State_Terrain = State_Terrain.ground; _State_Sliding = State_Sliding.notSliding; _State_Ragdoll = State_IsRagdoll.notRagdolled; _State_Headspace = State_Headspace.canStand; _State_LatchedSurface = State_LatchedSurface.noSurface; _remaining_Multijumps = _actor_Data._NumJumps; }
private void CheckHeadspace() { Debug.DrawRay(_transform.position + _transform.transform.up * _colliderYbounds * 0.5f, _transform.transform.up * (_colliderYbounds * 1.5f + _HeadspaceRayLength), Color.blue); if (Physics.Raycast(this.transform.position + _transform.transform.up * 1.0f, _transform.transform.up, out _headHitInfo, _colliderYbounds * 1.5f + _HeadspaceRayLength)) { _State_Headspace = State_Headspace.canNotStand; _State_MovementSpeed = State_MovementSpeed.crouchSpeed; return; } _State_Headspace = State_Headspace.canStand; }
//============================================================== //Input() is called every FixedUpdate by the InputController!!! //============================================================== public void Input(Vector3 inputMoveDirNormalized, Vector3 inputToMouseDirNormalized, Vector3 pointUnderCursor, GameObject objectUnderCursor, bool inputSprint, bool inputCrouch, bool inputJump, bool inputJumpDown) { if (inputSprint) { _State_MovementSpeed = State_MovementSpeed.sprintSpeed; } else if (inputCrouch) { _State_MovementSpeed = State_MovementSpeed.crouchSpeed; } else { _State_MovementSpeed = State_MovementSpeed.walkSpeed; } CheckGround(); CheckHeadspace(); CheckClimbable(); ScaleCrouching(); LatchToClimbable(inputCrouch); AttachToClimbable(); Gravity(); //get current speed multipliers last GetActorSpeedMult_TerrainState(); GetActorSpeedMult_MovementState(); CalculateCurrentCombinedSpeedMult(); if (_actor_Data._mayAct) { if (_actor_Data._mayMove) { MoveTo(inputMoveDirNormalized); } if (_actor_Data._mayRotate) { RotateAimTo(inputToMouseDirNormalized, inputMoveDirNormalized); } if (_actor_Data._mayJump) { Jump(inputJump, inputJumpDown, inputCrouch); } } // if _NumJumps > 0 || _JumpPower > 0 //Falling with actor._GravityMultiplier //Falling Impact with crouch and send falldamage to actor }