コード例 #1
0
ファイル: UseKey.cs プロジェクト: paulinodjm/toonraider
    public UseKey(LaraCroft user, Lock interactible)
        : base(user, interactible)
    {
        var strBuilder = new StringBuilder();

        strBuilder.Append("Utiliser ");
        strBuilder.Append(interactible.KeyName);
        _caption = strBuilder.ToString();
    }
コード例 #2
0
    public GrabLedgeDown(LaraCroft user, Interactible interactible, Vector3 grabPosition) :
        base(user, interactible)
    {
        GrabPosition = grabPosition;
        Ledge        = (Ledge)interactible;
        CalcUsePosition();

        Debug.DrawRay(UsePosition, Ledge.GrabDirection);
    }
コード例 #3
0
    void Awake()
    {
        var characters = FindObjectsOfType <LaraCroft>();

        foreach (var character in characters.Where(character => character.tag == "Player"))
        {
            Player = character;
            break;
        }
    }
コード例 #4
0
    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);
    }
コード例 #5
0
ファイル: Lock.cs プロジェクト: paulinodjm/toonraider
    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);
    }
コード例 #6
0
ファイル: Ledge.cs プロジェクト: paulinodjm/toonraider
    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));
    }
コード例 #7
0
ファイル: ItemPickable.cs プロジェクト: paulinodjm/toonraider
 public override Interaction GetInteractionFor(LaraCroft user)
 {
     return(IsPickable ? new PickupItem(user, this) : null);
 }
コード例 #8
0
 /// <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);
コード例 #9
0
ファイル: Interaction.cs プロジェクト: paulinodjm/toonraider
 /// <summary>
 /// Creates a new interaction
 /// </summary>
 /// <param name="user"></param>
 /// <param name="interactible"></param>
 public Interaction(LaraCroft user, Interactible interactible)
 {
     User         = user;
     Interactible = interactible;
 }
コード例 #10
0
ファイル: MissingItem.cs プロジェクト: paulinodjm/toonraider
 public MissingItem(LaraCroft user, Interactible interactible) :
     base(user, interactible)
 {
     // nothing to do
 }
コード例 #11
0
ファイル: Ledge.cs プロジェクト: paulinodjm/toonraider
    public Vector3 CalcGrabPositionFor(LaraCroft user)
    {
        var vector = transform.position - user.transform.position;

        return(Vector3.Project(vector, GrabDirection) + user.transform.position);
    }