Unity——射线检测(鼠标点击开关门效果)
2021-05-28 22:03
标签:app unity sha containe iso 新建 场景 ide inf 简要:通过鼠标点击来发射一条射线,来获得射线所碰到的物体名称,再通过改变门的Rotation值来实现开关门的效果。 1.1 简易的场景搭建
注:这里的门是unity资源商店下载的一个预制体。 1.2 给门添加碰撞体 选中要开的门页 添加Box Collider碰撞体(由于导入的资源包不带有碰撞体)
1.3 给门添加代码 新建C-sharp文件命名为DoorRay,编写代码文件; 测试,鼠标点击门页实现开关门效果。 代码:(相关解释代码中) 1.4 整体 Unity——射线检测(鼠标点击开关门效果) 标签:app unity sha containe iso 新建 场景 ide inf 原文地址:https://www.cnblogs.com/zw-521/p/14774456.htmlUnity射线检测——实现简单的开关门效果
一、代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
?
public class DoorRay : MonoBehaviour
{
//碰撞信息
RaycastHit hit;
//判断门的开关,关为false,开为true
private bool isOpen = false;
// Start is called before the first frame update
void Start()
{
?
}
?
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonUp(0))//这里的GetMouseButtonUp是指鼠标点击回弹时触发;
//GetMouseButtonDown是鼠标点击下去触发;0代表鼠标左键,1代表鼠标右键,2代表鼠标中键
{
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);//发射射线
?
if (Physics.Raycast(ray, out hit))//如果射到物体
{
Debug.Log(hit.collider.gameObject.name);//控制台输出检测到物体的名称
//判断门的开合,以及检测到的名称是否与门的名称相同(这里我的门的名称为doorWing)
if (isOpen.Equals(false) && hit.collider.gameObject.name.Equals("doorWing"))
{
//改变门页的Rotation中的y轴值(按照自己实际情况(x,y,z))
transform.rotation = Quaternion.Euler(0.0f, 90f, 0.0f);
isOpen = true;
}
else if (hit.collider.gameObject.name.Equals("doorWing") && isOpen.Equals(true))
{
transform.rotation = Quaternion.Euler(0.0f, 180f, 0.0f);
isOpen = false;
}
}
}
}
}