protected override void Update() { base.Update(); if (InitialUpdate) { SimpleMovementScript.StartModule(); InitialUpdate = false; } UpdateBuffs(); if (SimpleMovementScript.IsRunning()) { if (IsFalling()) { if (!MovementTransitionManagerScript.IsCurrentTransition(ModuleTypes.Simple, ModuleTypes.Falling)) { MovementTransitionManagerScript.StartTransitionFrom(ModuleTypes.Simple, ModuleTypes.Falling); } } else { Move currentMove = SimpleMovementScript.CurrentMove; Vector3 currentVector = SimpleMovementScript.CurrentVector; if (Vector3.zero != currentVector) { Entity.transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(currentVector), 0.15F); } Entity.transform.Translate(currentVector * currentMove.Speed * Time.deltaTime, Space.World); DebugConsole.INSTANCE.SetCurrentMove(currentMove); DebugConsole.INSTANCE.SetOther1("currentVector=" + currentVector); } } else if (ClimbMovementScript.IsRunning()) { ClimbMove currentMove = ClimbMovementScript.CurrentMove; Vector3 currentVector = ClimbMovementScript.CurrentVector; Entity.transform.Translate(currentVector * ClimbSpeed.GetSpeed(currentMove.Climb) * Time.deltaTime, Space.World); DebugConsole.INSTANCE.SetCurrentMove(currentMove); DebugConsole.INSTANCE.SetOther1("currentVector=" + currentVector); } }
protected void OnCollisionEnter(Collision collision) { base.OnCollisionEnter(collision); Move currentMove = SimpleMovementScript.CurrentMove; if (collision.gameObject.CompareTag("Climbable")) { ClimbableInRange = true; } if (ClimbableInRange) { if (!ClimbMovementScript.IsRunning()) { Collider[] climbables = Environment.GetClimbables(Entity.transform); if (0 != climbables.Length) { MovementTransitionManagerScript.StartTransitionFrom(ModuleTypes.Simple, ModuleTypes.Climbing); } } else { ClimbMovementScript.ForceStop(); MovementTransitionManagerScript.StartTransitionFrom(ModuleTypes.Climbing, ModuleTypes.Simple); } } else { //Debug.Log("BANG! tag = " + collision.gameObject.tag); if ((int)LayerValues.TERRAIN != collision.gameObject.layer) { SimpleMovementScript.ForceStop(); } } if ((int)LayerValues.TERRAIN == collision.gameObject.layer && FallMovementScript.IsRunning()) { MovementTransitionManagerScript.StartTransitionFrom(ModuleTypes.Falling, ModuleTypes.Simple); } }