2016-07-29 2 views
1

레이크 캐스트에서 탐지 한 태그를 기반으로 항목을 어떻게받을 수 있습니까?태그를 기준으로 인벤토리에 항목을 추가하는 방법은 무엇입니까?

땅에 구리 검이 있다고 가정하고 과 "F"를 눌러 집어 올립니다.

이제 스크립트에서 태그 "CopperSword"를 감지하고 인벤토리에 구리 검을 하나 놓아야합니다. 태그가 "IronSword"가되면 인벤토리에 하나의 철 검 등을 배치해야합니다.

using UnityEngine; 
using System.Collections; 

public class PickUp : MonoBehaviour 
{ 
    private Vector3 position; 
    private Vector3 target; 
    public int range = 2; 

    Inventory inv; 
    public GameObject player; 

    void Start() 
    { 
     inv = player.GetComponent<Inventory>(); 
    } 

    void Update() 
    { 
     position = gameObject.transform.position; 
     RaycastHit raycastHit; 
     target = position + Camera.main.transform.forward * range; 

     if (Physics.Linecast(position, target, out raycastHit)) 
     { 
      // Shows which object that the Raycast collided with 
      Debug.Log(raycastHit.collider.gameObject); 
     } 

     // Recieve an item based on the Tag 
     if (Input.GetButtonDown("Fire1")) 
     { 
      if (raycastHit.collider.tag == "CopperSword") 
      { 
       inv.copperSword += 1; 
      } 
     } 
    } 
} 

I 수 단지 하드 코드를 각각 "경우 문"각각의 특정 항목을 추가하려면,하지만 난 항목을 많이 가지고있는 경우 이들은 매우 유혹 생각하지 않습니다. 따라서이 문제에보다 쉽게 ​​접근 할 수 있어야합니다.

+0

raycastHit.collider.gameObject를 사용해야합니다. 여기서 gameObject는 모든 인벤토리 객체를 포함 할 수 있습니다. 이러한 인벤토리 객체는 BaseWithCanBePicked 같은 기본 객체에서 상속 받아 IronSword 및 CopperSword에서 상속 된 Sword 클래스에서 상속되어야합니다. –

+0

나는이 지식을 아직 가지고 있지 않지만이 책을 읽으려면 무엇을 읽고 배우는 지 시작점을 제공한다. 고맙습니다! :) – Markus121

+0

당신은 환영합니다. –

답변

0

"점토질은 그에게 유행이된다. 너는 무엇을 만드 느냐?" 성경, Isaiah, 45 : 9

관련 문제