private void Start() { this.movement = this.GetComponent <SnapGridMovement>(); Assert.IsNotNull(this.movement, "Missing asset in component"); this.currentMoveDirection = this.movement.GetRandomSnapGridDirection(); }
// ------------------------------------------------------------------------- private Vector2 GetNormVectorFromDirection(SnapGridMovementDirection moveDirection) { Vector2 result = new Vector2(0.0f, 0.0f); switch (moveDirection) { case SnapGridMovementDirection.LEFT: result.x = -1.0f; break; case SnapGridMovementDirection.RIGHT: result.x = 1.0f; break; case SnapGridMovementDirection.UP: result.y = 1.0f; break; case SnapGridMovementDirection.DOWN: result.y = -1.0f; break; default: Assert.IsTrue(false, "Unsupported direction"); break; } return(result); }
public SnapGridMovementDirection GetRandomSnapGridDirection() { float rand = Random.Range(0, 10000); // Arbitrary high number SnapGridMovementDirection dir = (SnapGridMovementDirection)(rand % (float)SnapGridMovementDirection.DIRECTIONS_COUNT); return(dir); }
public void ChangeRandomMovementNewDirection() { SnapGridMovementDirection newMovementDirection = this.movement.GetRandomSnapGridDirection(); while (newMovementDirection == this.currentMoveDirection) { newMovementDirection = this.movement.GetRandomSnapGridDirection(); } this.currentMoveDirection = newMovementDirection; }
public bool CanMoveInDirection(SnapGridMovementDirection direction) { Vector2 moveVector = GetNormVectorFromDirection(direction) * this.snapGridData.snapDistanceInUnityUnits; Physics2D.queriesStartInColliders = false; RaycastHit2D hit = Physics2D.Raycast(this.transform.position, moveVector, this.snapGridData.snapDistanceInUnityUnits); if (hit.collider == null) { return(true); } return(false); }
public bool Move(SnapGridMovementDirection moveDirection) { if (this.IsMoving() || !this.canMove) { return(false); } if (this.CanMoveInDirection(moveDirection)) { Vector2 moveVector = GetNormVectorFromDirection(moveDirection) * this.snapGridData.snapDistanceInUnityUnits; Debug.DrawLine(this.transform.position, this.transform.position + new Vector3(moveVector.x, moveVector.y, 0.0f), Color.yellow, 0.5f); Vector3 oldPosition = this.transform.position; this.moveReloadAccumulatorInSec = this.moveDurationInSec; this.movementState = SnapGridMovementState.MOVING; this.transform.Translate(moveVector); this.spriteRenderer.transform.position = oldPosition; // The sprite stays at the old position. Then lerp to new return(true); } return(false); }