public override void OnUpdate() { CharacterManager c = GetCharacterController(); EntityPhysicsManager physicsManager = GetPhysicsManager(); CharacterStats stats = (CharacterStats)c.entityDefinition.GetEntityStats(); Vector2 movementAxis = c.InputManager.GetAxis2D((int)EntityInputs.MOVEMENT); float maxSpeed = (stats.runMaxSpeed * movementAxis.x); Vector3 currentSpeed = physicsManager.forceMovement; if (Mathf.Abs(physicsManager.forceMovement.x) > Mathf.Abs(maxSpeed)) { physicsManager.ApplyMovementFriction(stats.groundFriction); } else { float tempAcc = ((stats.runAcceleration * Mathf.Abs(movementAxis.x)) + stats.runBaseAcceleration) * c.FaceDirection; currentSpeed.x += tempAcc; if (currentSpeed.x * c.FaceDirection > maxSpeed * c.FaceDirection) { currentSpeed.x = maxSpeed; } } physicsManager.forceMovement = currentSpeed; c.SetFaceDirection((int)Mathf.Sign(movementAxis.x)); CheckInterrupt(); }
private void HandleForce(Collider other) { EntityPhysicsManager epm = null; other.TryGetComponent <EntityPhysicsManager>(out epm); if (epm == null) { return; } Vector3 temp = epm.forceGravity + epm.forceMovement; switch (forceType) { case ForceType.Add: temp += CreateForce(other.GetComponent <EntityManager>()); break; case ForceType.Set: Vector3 setTemp = CreateForce(other.GetComponent <EntityManager>()); break; } if (maxMagnitude > 0 && temp.magnitude > maxMagnitude) { temp = temp.normalized * maxMagnitude; } epm.forceGravity.y = temp.y; temp.y = 0; epm.forceMovement = temp; }
public override bool Evaluate(uint frame, uint endFrame, CAF.Entities.EntityManager controller, AttackEventVariables variables) { EntityManager e = (EntityManager)controller; EntityPhysicsManager physicsManager = (EntityPhysicsManager)controller.PhysicsManager; Vector3 f = Vector3.zero; if (xForce) { f.x = variables.floatVars[0] * e.FaceDirection; } if (yForce) { f.y = variables.floatVars[1]; } if (yForce) { physicsManager.forceGravity.y = f.y; } if (xForce) { f.y = 0; physicsManager.forceMovement = f; } return(false); }
public override void SimUpdate() { if (timer > 0) { timer--; } if (detectionArea.entities.Count > 0) { target = GetClosestTarget(); EntityPhysicsManager epm = (EntityPhysicsManager)target.PhysicsManager; //transform.LookAt(target.transform.position + Vector3.up + epm.forceMovement); transform.LookAt(PredictPosition(target.gameObject) + Vector3.up); if (timer <= 0) { danmakuConfig.position = transform.position; danmakuConfig.rotation = transform.eulerAngles; danmakuManager.Fire(danmaku, danmakuConfig, team, hitInfo); timer = countdown; } } danmakuManager.Tick(); }
public override bool CheckInterrupt() { CharacterManager c = GetCharacterController(); EntityPhysicsManager physicsManager = (EntityPhysicsManager)GetPhysicsManager(); CharacterStats stats = (CharacterStats)c.entityDefinition.GetEntityStats(); if (c.StateManager.CurrentStateFrame == stats.enemyStepLength) { c.StateManager.ChangeState((int)EntityStates.AIR_JUMP); return(true); } if (c.TryAttack()) { Vector2 movementInput = c.InputManager.GetAxis2D((int)EntityInputs.MOVEMENT); if (movementInput.magnitude > InputConstants.moveDeadzone) { physicsManager.RedirectInertia(storedMovement.x, movementInput); } else { physicsManager.forceMovement = storedMovement; } return(true); } return(false); }
public override bool Evaluate(uint frame, uint endFrame, CAF.Entities.EntityManager controller, AttackEventVariables variables) { EntityPhysicsManager physicsManager = (EntityPhysicsManager)controller.PhysicsManager; physicsManager.forceMovement.x = Mathf.Clamp(physicsManager.forceMovement.x, -variables.floatVars[0], variables.floatVars[0]); return(false); }
public override void Initialize() { base.Initialize(); CharacterManager c = GetCharacterController(); EntityPhysicsManager physicsManager = (EntityPhysicsManager)GetPhysicsManager(); storedMovement = physicsManager.forceMovement; physicsManager.forceMovement = Vector3.zero; physicsManager.forceGravity = Vector3.zero; }
public override bool Evaluate(uint frame, uint endFrame, CAF.Entities.EntityManager controller, AttackEventVariables variables) { EntityPhysicsManager physicsManager = (EntityPhysicsManager)controller.PhysicsManager; if (xFriction) { physicsManager.ApplyMovementFriction(variables.floatVars[0]); } if (yFriction) { physicsManager.ApplyGravityFriction(variables.floatVars[0]); } return(false); }
public override bool Evaluate(uint frame, uint endFrame, CAF.Entities.EntityManager controller, AttackEventVariables variables) { EntityPhysicsManager physicsManager = (EntityPhysicsManager)controller.PhysicsManager; if (controller.IsGrounded) { physicsManager.forceGravity = Vector3.zero; return(false); } EntityStats entityStats = ((TDAction.Entities.EntityManager)controller).entityDefinition.GetEntityStats(); float percent = (float)frame / (float)endFrame; float gravity = entityStats.gravity; if (!useEntityGravity) { gravity = variables.curveVars[0].Evaluate(percent) * variables.floatVars[0]; } float gravityScale = physicsManager.GravityScale; if (!useEntityGravityScale) { gravityScale = variables.curveVars[1].Evaluate(percent) * variables.floatVars[1]; } float maxFallSpeed = entityStats.maxFallSpeed; if (!useEntityMaxFallSpeed) { maxFallSpeed = variables.curveVars[2].Evaluate(percent) * variables.floatVars[2]; } physicsManager.HandleGravity(maxFallSpeed, gravity, gravityScale); return(false); }