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 수 단지 하드 코드를 각각 "경우 문"각각의 특정 항목을 추가하려면,하지만 난 항목을 많이 가지고있는 경우 이들은 매우 유혹 생각하지 않습니다. 따라서이 문제에보다 쉽게 접근 할 수 있어야합니다.
raycastHit.collider.gameObject를 사용해야합니다. 여기서 gameObject는 모든 인벤토리 객체를 포함 할 수 있습니다. 이러한 인벤토리 객체는 BaseWithCanBePicked 같은 기본 객체에서 상속 받아 IronSword 및 CopperSword에서 상속 된 Sword 클래스에서 상속되어야합니다. –
나는이 지식을 아직 가지고 있지 않지만이 책을 읽으려면 무엇을 읽고 배우는 지 시작점을 제공한다. 고맙습니다! :) – Markus121
당신은 환영합니다. –