void AssignTarget(ClimbDirection direction) { canMove = false; targetPoint = GetDestination(direction); if (targetPoint != null) { //General Movement AssignMovePoints(this.transform, targetPoint); //IK if (direction == ClimbDirection.Down || direction == ClimbDirection.Left) { StartCoroutine(MovingHands(true, targetPoint.GetComponent <ClimbPoint>())); } else { StartCoroutine(MovingHands(false, targetPoint.GetComponent <ClimbPoint>())); } if (GetTransition(direction) == ClimbTransitionType.dismount) { autoDismount = true; } current = targetPoint.GetComponent <ClimbPoint>(); } else { canMove = true; } }
public RopeComponent(int entityId, List<Body> bodies, Body anchorBody, ClimbDirection climbDirection) { _entityId = entityId; _bodies = bodies; _anchorBody = anchorBody; _climbDirection = climbDirection; }
Transform GetDestination(ClimbDirection direction) { Transform retVal = null; foreach (Climbing.ClimbNeighbor point in current.neighbors) { if (point.direction == direction) { retVal = point.target.transform; break; } } return(retVal); }
ClimbTransitionType GetTransition(ClimbDirection direction) { ClimbTransitionType retVal = ClimbTransitionType.step; foreach (Climbing.ClimbNeighbor point in current.neighbors) { if (point.direction == direction) { retVal = point.type; break; } } return(retVal); }
public bool ClimbAvailable(ClimbDirection dir, out Vector2 climbPosition) { foreach (var point in availableClimbPoints) { if ((dir == ClimbDirection.Left && point.transform.localScale.x < 0.0f) || (dir == ClimbDirection.Right && point.transform.localScale.x >= 0.0f)) { climbPosition = new Vector2(point.transform.position.x, point.transform.position.y); return(true); } } climbPosition = Vector2.zero; return(false); }