Я недавно скачал кухонный шкаф → https://www.cgtrader.com/3d-models/interior/kitchen/ca-5cd9388f-0be1-4cea-ab44-bc1b493f590f
Так что в принципе все работает нормально, однако я добавил контроллер игрока и хочу, чтобы в каждом шкафу игрок нажал E
, чтобы открыть его. У меня есть некоторые серьезные трудности с этим, хотя, поскольку каждый шкаф открывается вместо одного, и я не знаю, как сосредоточиться только на одном за раз, может быть, добавление боксового коллайдера, когда игрок находится рядом со шкафом?
Кроме того, я обнаружил два различных типа нажатия клавиш:
→ Input.GetKeyDown(KeyCode.E)
=, который слегка открывает каждый шкаф, но не полностью
→ Input.GetKey("e")
=, который полностью открывает каждый шкаф, но вы должны продолжать нажимать E
, и это не то, что я хочу.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door : MonoBehaviour {
public bool isopen;
public float speed;
[SerializeField]
float Open,Close;
private void Awake()
{
}
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKey("e"))
{
isopen = true;
Quaternion open = Quaternion.Euler(Open, 90, 90);
transform.localRotation = Quaternion.Slerp(transform.localRotation, open, Time.deltaTime * speed);
}
else
{
isopen = false;
Quaternion close = Quaternion.Euler(Close, 90, 90);
transform.localRotation = Quaternion.Slerp(transform.localRotation, close, Time.deltaTime * speed);
}
}
void PlayAnim()
{
print("hit");
if (isopen)
{
isopen = false;
}
else
{
isopen = true;
}
}
}
Вот мой скрипт 'HIT':
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class hit : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.E))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 100.0f))
{
hit.transform.SendMessage("PlayAnim");
}
}
}
}
Однако, скрипт работает только для моих ящиков, но не для моего шкафа, которые все слегка открываются при нажатии E.
Но когда игрок смотрит на ящик, он нажимает E, и открывается только ящик, на котором он сфокусирован, те же шаги, чтобы закрыть его.
Я добавил скрипт HIT в свои шкафы, хотя ...
Итак, я хотел бы иметь возможность открыть один шкаф, когда это необходимо, и снова нажать E
, чтобы закрыть его.
Как я должен делать? Любые направления?
Большое спасибо, ребята.