private Vector2 GenerateRelictVelocity() { Vector2 normal = Vector2Helpers.DegreeToVector2(RandomHelpers.Range(relicAngle)); float velocity = TileHelpers.TileToWorld(RandomHelpers.Range(relicTileVelocity)); return(normal * velocity); }
private void AttackPlayer(PlayerUnitController player) { PlayerVulnerability vulnerability = player.di.vulnerability; Vector2 lookVector = new Vector2(physics.flip.Direction.ToFloat(), 1); if (vulnerability.IsGuardingInOpposingDirection(physics.flip.Direction)) { float recoilTileForce; if (IsFullAssembly(player)) { stateMachine.attack.StartStagger(); recoilTileForce = data.guardFullAssemblyRecoilTileForce; // TODO: short stagger? } else { recoilTileForce = data.guardPartialAssemblyRecoilTileForce; Vector2 playerRecoil = RecoilHelpers.GetRecoilFromTo(player.transform, controller.transform, recoilTileForce); player.di.stateMachine.SetRecoilState(playerRecoil); } } else if (vulnerability.IsVulnerable()) { PlayerDamageModule damage = player.di.damage; Vector2 collisionRecoil = RecoilHelpers.GetRecoilNormalFromTo(player.transform, controller.transform); if (IsFullAssembly(player)) { damage.TakeDamage(data.attackDamage, TileHelpers.TileToWorld(data.attackFullAssemblyRecoilTileForce) * collisionRecoil); } else { damage.TakeDamage(data.attackDamage, TileHelpers.TileToWorld(data.attackPartialAssemblyRecoilTileForce) * collisionRecoil); } } }
private void CheckForSpriteRotation() { if (rotationFrames > 0 && rotationFramesLeft == 0) { Vector2 deltaMoveCheckForRotation = TileHelpers.TileToWorld(edgeMoveTileSpeed) * rotation.GetFrontVector() * Time.deltaTime * 0.5f * rotationFrames; if (raycaster.HasNoColliderBelow(deltaMoveCheckForRotation)) { rotationFramesLeft = rotationFrames; float t = 1 - (float)rotationFramesLeft / rotationFrames; spriteRenderer.transform.localRotation = Quaternion.Lerp(noRotation, counterClockwise90Rotation, t); } } }
private void OnTriggerStay2D(Collider2D collision) { PlayerUnitController unit = InteractiveHelpers.GetPlayer(collision); if (!unit) { return; } if (unit.di.vulnerability.IsVulnerable()) { float randomSign = Random.Range(0, 2) == 1 ? 1 : -1; Vector2 randomPushForce = TileHelpers.TileToWorld(new Vector2(randomSign * pushTileForce.x, pushTileForce.y)); unit.di.damage.TakeFullDamage(randomPushForce); } }
public void TileOnMoveInto(PhysicsMove move) { // TODO: use PlayerCollider or move.movement.controller PlayerUnitController unit = move.hit.rigidbody.GetComponent <PlayerUnitController>(); if (!unit) { return; } if (unit.di.vulnerability.IsVulnerable()) { float randomSign = RandomHelpers.OneOrMinusOne(); Vector2 randomPushForce = TileHelpers.TileToWorld(new Vector2(randomSign * pushTileForce.x, pushTileForce.y)); unit.di.damage.TakeFullDamage(randomPushForce); } }
public void UpdateState() { selectUnit.WallSlideUpdate(); if (stateMachine.ChangedState) { return; } if (physics.IsGrounded) { stateMachine.SetControlState(); return; } float wallSlideYVelocity = TileHelpers.TileToWorld(wallSlideYTileVelocity); if (physics.velocity.Y < -wallSlideYVelocity) { physics.velocity.Y = -wallSlideYVelocity; } wallSlide.WallSlideUpdate(); jump.WallSlideUpdate(); physics.WalSlideUpdate(); }
private void MoveForwardUpdate() { float forwardTileSpeed = rotationFramesLeft == 0 ? moveTileSpeed : edgeMoveTileSpeed; Vector2 forwardDeltaMove = TileHelpers.TileToWorld(forwardTileSpeed) * rotation.GetFrontVector() * Time.deltaTime; Vector2 moveAmount = movement.TryToMove(forwardDeltaMove); if (raycaster.HasWallInFront()) { ReverseSnail(); } else if (raycaster.HasNoColliderBelow()) { if (goAround) { RotateSnail90(); } else { ReverseSnail(); } } }
void FixedUpdate() { Vector2 moveAmount = transform.right * TileHelpers.TileToWorld(tileMoveAmount) * Time.deltaTime; rigidbody.position = rigidbody.position + moveAmount; }
internal void WalkInDirection(Direction2H direction) { flip.Direction = direction; physics.MoveUpdate(direction.ToVector2() * TileHelpers.TileToWorld(walkTileVelocity)); }
public void RunInDirection(Direction2H direction) { flip.Direction = direction; physics.MoveUpdate(direction.ToVector2() * TileHelpers.TileToWorld(runTileVelocity)); }