文章目录
前言
试着想象一下,当你在unity3D导入精美的建筑模型并完成移动代码后,迫不及待地准备进入游戏准备看看建筑的内部效果,结果撞在了门上。
一、解决方案
那我们应该如何在Unity3D中解决开关门呢?
答:直接把全地图的门都给卸了!
漏 漏 漏,这种方法过于简单粗暴了,而且会极度影响玩家的游戏体验,比如你在做一个恐怖游戏,想要在门后面整一个鬼脸,开门时直接贴脸吓人,如果把门拆了,玩家大老远就会看到鬼脸,那还有啥意思?
那我们该怎么办呢?话不多说直接开搞!
首先我们要了解unity中使用C#的转向方法,代码如下:
transform.Rotate(X,Y,Z);
让门沿着某个轴旋转90°,比如我的门沿Z轴转就能打开,所以我的代码是:
transform.Rotate(0f,0f,90);
另外两个轴不用动,直接写“0f”就可以了!
接下来关门,就是倒着转90°,也就是转-90°:
transform.Rotate(0f,0f,-90);
搞好了转向还不行,接下来我们还需要搞出各种判断,毕竟我们做的不是自动门而是手动的。
二、开发步骤
1.Door
接下来料比较多,直接拼一起,方便大家Ctrl c再Ctrl v:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door : MonoBehaviour
{
Transform tf;
private bool isOpen = false;
void Start()
{
tf = gameObject.GetComponent<Transform>();
}
// Update is called once per frame
void Update()
{
}
public void OpenDoorMethod()
{
tf.Rotate(0f,0f,90);
Debug.Log("open");
isOpen = !isOpen;
}
public void CloseDoorMethod()
{
tf.Rotate(0f,0f,-90);
Debug.Log("close");
isOpen = !isOpen;
}
public bool GetIsOpen()
{
return isOpen;
}
public void SetIsOpen(bool b)
{
isOpen = b;
}
}
以上是给门的代码,其中“tf = gameObject.GetComponent<Transform>()”就是用tf代替Transform,来帮助各位偷懒。Debug.Log就是在控制台输出。
2.Trigger
各位不要急,门的代码好了,但是我们要弄个触发器,只有在范围内按下F才有用,直接在门的地下建一个空对象。命名为doorTrigger。
然后为doorTrigger写入下面的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Trigger : MonoBehaviour
{
private Door m_Door;
private bool enterCollide = false;
// Start is called before the first frame update
void Start()
{
m_Door = GameObject.Find("Door").GetComponent<Door>();
}
void OnTriggerEnter(Collider collider)
{
Debug.Log("enter");
enterCollide = true;
}
void OnTriggerExit(Collider collider)
{
Debug.Log("exit");
enterCollide = false;
}
// Update is called once per frame
void Update()
{
if (enterCollide)
{
if (Input.GetKeyDown(KeyCode.F))
{
if (m_Door.GetIsOpen())
{
m_Door.CloseDoorMethod();
}
else
{
m_Door.OpenDoorMethod();
}
}
}
}
}
把“m_Door = GameObject.Find("Door").GetComponent<Door>()”中括号里的Door改成自己的门的名字就可以了!!
(新加的:)忘记说了,还需要添加Box Collider组件
然后勾选“是触发器”。
总结
终于学废了,还不快点赞收藏加关注!!