Unity——射线检测(鼠标点击开关门效果)
2021/5/16 18:55:38
本文主要是介绍Unity——射线检测(鼠标点击开关门效果),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Unity射线检测——实现简单的开关门效果
简要:通过鼠标点击来发射一条射线,来获得射线所碰到的物体名称,再通过改变门的Rotation值来实现开关门的效果。
一、代码实现
1.1 简易的场景搭建
注:这里的门是unity资源商店下载的一个预制体。
1.2 给门添加碰撞体
-
选中要开的门页
-
添加Box Collider碰撞体(由于导入的资源包不带有碰撞体)
1.3 给门添加代码
-
新建C-sharp文件命名为DoorRay,编写代码文件;
-
测试,鼠标点击门页实现开关门效果。
代码:(相关解释代码中)
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; } } } } }
1.4 整体
这篇关于Unity——射线检测(鼠标点击开关门效果)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南