void EnemyMove(bool grounded, bool landed, bool fall) { Vector3 mvt = Vector3.zero; bool dodge_input = false; bool sprint_input = false; bool sprint_attack = false; bool walk_around = false; bool hit = false; EnemyInput(out mvt, out dodge_input, out sprint_input, out sprint_attack, out walk_around, out hit); float enemy_mvt_intensity = Vector3.SqrMagnitude(mvt); SendTriggerToAnimator(false, landed, fall, dodge_input, false, false, false, false, false); if (sprint_input) { anim_control.Launch("sprint_attack"); } if (sprint_attack) { anim_control.BoolControl("in_range", true); } if (walk_around) { anim_control.Launch("walk_around"); } if (hit) { if (CurrentState == CharacterState.hit) { anim_control.HitAnimation("follow"); } else { anim_control.HitAnimation("hit"); } } if (GetComponent <EnemyAI>().IsWalkAround()) { Vector3 look_at_ennemy = GetComponent <EnemyAI>().GetLookDirection(); CharacterMovement.MoveCharacter(controller, transform, mvt, intensity: 1f, ref current_horizontal_speed, GroundSpeed, Acceleration, Decceleration, ref current_vertical_speed, JumpSpeed, GroundedGravity, AimAerialGravity, MaxFallSpeed, grounded, jump_trigger, RotationSpeed, false, face_direction: look_at_ennemy); } else { MoveLogic(mvt, enemy_mvt_intensity > 0.2f * 0.2f ? Mathf.Clamp01(enemy_mvt_intensity) : 0f, grounded, 0f); } }
void PlayerMove(bool grounded, bool landed, bool fall) { // DEBUG if (Input.GetKey(KeyCode.Space)) { LaunchCameraShake(0f, 0f, 0f); } Vector3 user_dir = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")); bool jump_input = Input.GetButtonDown("AButton"); bool dodge_input = Input.GetButtonDown("BButton"); bool aim = Input.GetAxis("L2") > 0.2f ? true : false; bool hit = Input.GetButtonDown("XButton"); bool change_weapon_state = Input.GetButtonDown("YButton"); bool axe_action = Input.GetButton("R1"); bool call_axe = Input.GetButton("L1") && AxeState == AxeStates.AxeOut; float aim_inc = Input.GetAxis("VerCam"); float aim_rot = Input.GetAxis("HorCam"); intensity = Vector3.SqrMagnitude(user_dir); if (intensity < 0.2f * 0.2f) { user_dir = Vector3.zero; } movement_dir = CharacterMovement.ProjectInputOnPlane(user_dir, CurrentCamera); bool run_turn, run_stop; RunStopsLogic(out run_turn, out run_stop); SendTriggerToAnimator(jump_input, landed, fall, dodge_input, hit, run_turn, run_stop, change_weapon_state, call_axe); SendAnimatorBool(aim, axe_action); CharacterAimBehaviour(aim_inc); MoveLogic(movement_dir, intensity, grounded, aim_rot); ResetTriggers(); }
void Update() { bool grounded = CharacterMovement.CheckGrounded(AerialStateCheck, HeightCheck, ignore_layer: HitboxLayer); bool landed = (!IsGrounded && grounded); bool fall = (!grounded && IsGrounded); IsGrounded = grounded; if (Axe != null) { PlayerMove(grounded, landed, fall); } else { EnemyMove(grounded, landed, fall); if (CurrentState == CharacterState.executed) { MoveLogic(Vector3.zero, 1f, false, 0f); } } }
public void ExitDash() { CharacterMovement.RotateCharacter(transform, movement_dir, 1f, flat: true, instantaneous: true); // Debug.Break(); }
void MoveLogic(Vector3 mvt_dir, float strengh, bool grounded, float aim_rot) { if (CurrentState == CharacterState.normal) { float current_rot_speed = RotationSpeed; if (MoveState == MovingState.normal) { float a = 0f; } else if (MoveState == MovingState.turn) { current_horizontal_speed = Mathf.MoveTowards(current_horizontal_speed, 0f, 5f * Time.deltaTime); strengh = 1f; // current_rot_speed *= 0.1f; current_horizontal_speed = 0f; } else if (MoveState == MovingState.stop) { strengh = 0f; } else { // Debug.Break(); } CharacterMovement.MoveCharacter(controller, transform, mvt_dir, strengh, ref current_horizontal_speed, GroundSpeed, Acceleration, Decceleration, ref current_vertical_speed, JumpSpeed, GroundedGravity, AirborneGravity, MaxFallSpeed, grounded, jump_trigger, current_rot_speed, true, Vector3.zero); if (AllowTilt) { CharacterMovement.UpdateTilt(transform, mvt_dir, strengh, ref current_tilt_value, TiltMaxRotation, TiltLerpSpeed); CharacterMovement.TiltCharacter(TiltTarget, transform, current_tilt_value, initial_tilt_rotation, TiltMaxAngle, Vector3.forward); } } else if (CurrentState == CharacterState.dodge) { float dodge_accel, dodge_decel, dodge_strengh, dodge_intensity; if (UseImpulseForDodge) { dodge_intensity = CharacterImpulse.Step() ? 1f : 0f; dodge_accel = CharacterImpulse.Accel; dodge_decel = CharacterImpulse.Deccel; dodge_strengh = CharacterImpulse.Strengh; // Debug.Log("using impulse: " + dodge_intensity.ToString() + "," + dodge_accel.ToString() + "," + mvt_dir.ToString() + "," + dodge_strengh.ToString()); } else { dodge_accel = DodgeAcceleration; dodge_decel = Decceleration; dodge_strengh = DodgeStrengh; dodge_intensity = 1f; } CharacterMovement.MoveCharacter(controller, transform, mvt_dir, intensity: dodge_intensity, ref current_horizontal_speed, dodge_strengh, dodge_accel, dodge_decel, ref current_vertical_speed, JumpSpeed, GroundedGravity, AirborneGravity, MaxFallSpeed, true, false, rotation_speed: DodgeRotationSpeed, do_rotate: FaceDodgeDirection, Vector3.zero); // Debug.Log("DODGE FOR " + gameObject.name + " Vec " + mvt_dir.ToString()); // if(AllowTilt) // RESET TILT VALUE // CharacterMovement.TiltCharacter(transform, transform.forward, initial_tilt_rotation, // 60f, TiltMaxAngle, transform.forward, // TiltLerpSpeed * 2f, ref current_tilt_value, intensity, lerp:true); } else if (CurrentState == CharacterState.aim) { // Vector3 look_at_ennemy = Ennemy.position - transform.position; Vector3 look_at_ennemy = Quaternion.AngleAxis(aim_rot * AimRotationSpeed * Time.deltaTime, Vector3.up) * transform.forward; // Vector3 look_at_ennemy = Vector3.ProjectOnPlane(Camera.main.transform.forward, Vector3.up); //transform.forward; // float angle_lookat = Vector3.SignedAngle(look_at_ennemy, transform.forward, Vector3.up); // look_at_ennemy = Mathf.Abs(angle_lookat) < 10f ? transform.forward : look_at_ennemy; // TESTING TOLERANCE OF 5 DEGREES // Debug.DrawRay(transform.position, Vector3.ProjectOnPlane(transform.forward, Vector3.up), Color.blue, 1f); // Debug.DrawRay(transform.position, Vector3.ProjectOnPlane(Camera.main.transform.forward, Vector3.up), Color.red, 1f); CharacterMovement.MoveCharacter(controller, transform, mvt_dir, intensity: strengh, ref current_horizontal_speed, GroundSpeed, AimAcceleration, Decceleration, ref current_vertical_speed, JumpSpeed, GroundedGravity, AimAerialGravity, MaxFallSpeed, grounded, jump_trigger, RotationSpeed, false, face_direction: look_at_ennemy); } else if (CurrentState == CharacterState.hit) { mvt_dir = CharacterImpulse.Direction; strengh = CharacterImpulse.Step() ? 1f : 0f; CharacterMovement.MoveCharacter(controller, transform, mvt_dir, intensity: strengh, ref current_horizontal_speed, CharacterImpulse.Strengh, CharacterImpulse.Accel, CharacterImpulse.Deccel, ref current_vertical_speed, JumpSpeed, GroundedGravity, AirborneGravity, MaxFallSpeed, grounded, jump_trigger, 0f, true, Vector3.zero); } else if (CurrentState == CharacterState.cinematic) { // PLACEHOLDER. SHOULD BE SET WITHIN MOVECHARACTER CLASS transform.position = Vector3.MoveTowards(transform.position, CinematicTargetPosition, Time.deltaTime * CinematicMaxMoveSpeed); transform.LookAt(ExecTarget.gameObject.transform.position); } else if (CurrentState == CharacterState.executed) { // Debug.Log("Called in executed state" + ExecutionAcceleration.ToString() + "," + ExecutionDecceleration.ToString() + "," + // current_horizontal_speed.ToString() + "," + ExecutionProjectionForce.ToString() + "," + strengh.ToString()); CharacterMovement.MoveCharacter(controller, transform, transform.rotation * ExecutionProjectionDirection, intensity: strengh, ref current_horizontal_speed, ExecutionProjectionForce, accel: Decceleration, decel: ExecutionAcceleration, ref current_vertical_speed, 0f, GroundedGravity, AirborneGravity, MaxFallSpeed, grounded, false, rotation_speed: 0f, do_rotate: false, face_direction: Vector3.zero); } }