public UseKey(LaraCroft user, Lock interactible) : base(user, interactible) { var strBuilder = new StringBuilder(); strBuilder.Append("Utiliser "); strBuilder.Append(interactible.KeyName); _caption = strBuilder.ToString(); }
public GrabLedgeDown(LaraCroft user, Interactible interactible, Vector3 grabPosition) : base(user, interactible) { GrabPosition = grabPosition; Ledge = (Ledge)interactible; CalcUsePosition(); Debug.DrawRay(UsePosition, Ledge.GrabDirection); }
void Awake() { var characters = FindObjectsOfType <LaraCroft>(); foreach (var character in characters.Where(character => character.tag == "Player")) { Player = character; break; } }
public PickupItem(LaraCroft user, Interactible interactible) : base(user, interactible) { var transform = interactible.transform; var useDirection = (transform.position - user.transform.position).normalized; _usePosition = transform.position - useDirection * user.PickupDistance; useDirection.y = 0; _useRotation = Quaternion.LookRotation(useDirection); }
public override Interaction GetInteractionFor(LaraCroft user) { if (IsUsed) { return(null); } var hasKey = user.Inventory.Items.Find(KeyName) != null; var interaction = (Interaction)null; if (hasKey) { interaction = new UseKey(user, this); } else { interaction = new MissingItem(user, this); } return(interaction); }
public override Interaction GetInteractionFor(LaraCroft user) { if (!user.IsGrounded) { return(null); } var groundPosition = user.transform.position; if (groundPosition.y < transform.position.y) { return(null); } var grabPosition = CalcGrabPositionFor(user); var characterController = user.GetComponent <CharacterController>(); var targetPosition = grabPosition + GrabDirection * characterController.radius; Debug.DrawLine(grabPosition, targetPosition, Color.red); return(new GrabLedgeDown(user, this, grabPosition)); }
public override Interaction GetInteractionFor(LaraCroft user) { return(IsPickable ? new PickupItem(user, this) : null); }
/// <summary> /// Returns the current interaction for this user /// </summary> /// <param name="user">User</param> /// <returns>The interaction, or null if no available</returns> public abstract Interaction GetInteractionFor(LaraCroft user);
/// <summary> /// Creates a new interaction /// </summary> /// <param name="user"></param> /// <param name="interactible"></param> public Interaction(LaraCroft user, Interactible interactible) { User = user; Interactible = interactible; }
public MissingItem(LaraCroft user, Interactible interactible) : base(user, interactible) { // nothing to do }
public Vector3 CalcGrabPositionFor(LaraCroft user) { var vector = transform.position - user.transform.position; return(Vector3.Project(vector, GrabDirection) + user.transform.position); }