前文:https://blog.csdn.net/Jaihk662/article/details/86763612(物体中心点与物体旋转)

前面已经实现了用按键控制物体Door的旋转如下:

而实际上你还有一个可以用上下左右控制的小方块:

那么问题来了:如何实现当且仅当小方块移动到Door里面,才允许用键盘控制Door的旋转呢?

一、空物体触发器

首先:肯定是要使用触发器判定当前小方块是否在Door里面,这个时候就需要一个触发器

可是使用触发器就无法实现碰撞体组件了,这个时候就需要一个空物体触发器,来间接控制Door

void OnTriggerEnter(Collider coll)
{if(coll.gameObject.name=="Player"){flag = 1;           //flag==1表示方块在"Door"的里面}
}
void OnTriggerExit(Collider coll)
{if (coll.gameObject.name == "Player"){flag = 0;}
}

二、查找游戏模型

但是,触发器是触发器,它只是个空物体,那么如何使这个“空物体”控制“Door”的移动呢?

那当然是要先查找物体了

  • GameObject.Find(string):静态方法,通过名字查找游戏物体

也就是可以直接通过 GameObject.Find("游戏物体名字").GetComponent<脚本名字>() 来获取对应的脚本组件,这个时候就可以在当前脚本里面调用对应脚本里面的方法了

空物体触发器脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LRtoDoor : MonoBehaviour
{private Door mydoor;private Transform myTransform;private Rigidbody myRigidbody;void Start(){mydoor = GameObject.Find("Door").GetComponent<Door>();myTransform = gameObject.GetComponent<Transform>();        //获取相应对象的引用myRigidbody = gameObject.GetComponent<Rigidbody>();}void Update(){}void OnTriggerStay(Collider coll){if (coll.gameObject.name=="Cube (3)")      //如果方块进入了Door里面{Debug.Log("触发成功,可以用ZX键控制旋转");mydoor.Rotate();}}
}

Door脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door : MonoBehaviour
{private Transform myTransform;private Rigidbody myRigidbody;void Start(){myTransform = gameObject.GetComponent<Transform>();myRigidbody = gameObject.GetComponent<Rigidbody>();}void Update(){}public void Rotate()            //注意这要公有{if (Input.GetKeyDown(KeyCode.Z))myTransform.Rotate(Vector3.down, 90);           //按下Z键让物体沿世界坐标系前方旋转90°if (Input.GetKeyDown(KeyCode.X))myTransform.Rotate(Vector3.up, 90);}
}

效果如下:

Unity3D基础18:物体查找与控制相关推荐

  1. Unity3D基础19:Tag标签

    前文:https://blog.csdn.net/Jaihk662/article/details/86763790(物体查找与控制) 前面已经实现了当小方块在Door里面时,可以用按键控制物体Doo ...

  2. Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)

    Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作) 一.属性介绍 1.主面板Particle System (1)Duration:粒子发射周期 图中,5.00即在发射5秒后进入下一个 ...

  3. Unity3d基础知识之Texture纹理、Shader着色器、Material材质、Rendering Mode

    Unity3d基础知识之Texture纹理.Shader着色器.Material材质.Rendering Mode 一.纹理.着色器与材质 Texture(纹理):应用于网格表面上的标准位图图像.Un ...

  4. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  5. 18春东师计算机应用基础,东师计算机应用基础18春在线作业31.docx

    东师计算机应用基础18春在线作业3 1.A 2.A 3.D 4.D 5.C 一.单选题共25题,62.5分 1.解释程序的功能是 A解释执行高级语言程序 B解释执行汇编语言程序 C将汇编语言程序编译成 ...

  6. 计算机应用基础18春在线作业1答案,东师计算机应用基础-18春在线作业1.docx

    东师计算机应用基础18春在线作业1 1.A 2.C 3.C 4.C 5.B 一.单选题共25题,62.5分 1.国际区位.全拼双音.五笔字型和自然码是不同种类的汉字 A外码 B内码 C字型码 D交换码 ...

  7. unity3d中让物体显示和隐藏

    unity3d中让物体显示和隐藏的方法 gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示  而物体实际还是存在的 仅仅是想当于隐身 而物体本身的碰撞体还 ...

  8. Unity3D基础2:新建模型

    前文:https://blog.csdn.net/Jaihk662/article/details/86743037(Unity3D基础操作) 一.尺寸与方向 尺寸:默认的方块(Cube)长宽高都是1 ...

  9. Unity3D基础1:进入Unity3D

    下载和安装以及项目的建立在这里就没做介绍--很容易找到教程 这里是写在建立项目之后: 一.项目(Project)存储结构: 项目目录: Assets:资源文件夹,保存游戏中所有的资源,初始为空 Lib ...

最新文章

  1. 12.集合:在我的世界里,你就是唯一 / 不可变集合
  2. 《2018面向对象程序设计(java)课程学习进度条》
  3. iOS判断是模拟器还是真机
  4. jenkins日志乱码linux,Jenkins控制台中乱码问题解决
  5. swoole mysql 连接池_基于Swoole的通用连接池 - 数据库连接池
  6. 那些Python意想不到的对象
  7. 20145239杜文超 《Java程序设计》第3周学习总结
  8. 【HDU1284 中南林业大学第十一届校赛 B:】兑换零钱(dp)
  9. C语言从入门到放弃视频教程
  10. h3c交换机重启_h3c交换机清空配置命令
  11. Linux设置小红点键盘,debian linux上安装thinkpad小红点驱动/Installing Debian On Thinkpad – Trackpoint...
  12. MacOS Mojava密码最小4位,这很讨厌!
  13. 尘梦留痕:苏东坡的诗词里,藏着六种人生智慧
  14. 计算机论文期刊文献,j计算机期刊文章参考文献 j计算机参考文献有哪些
  15. qt4.8.7 2016年4月18日 error reading collection file qthelpcollection cannot load sql
  16. 3种性格容易焦虑 你知道吗
  17. word 手动双面打印设置
  18. 基于Matlab的火灾预警系统
  19. response导出html到word
  20. 婴幼儿办理护照的过程及注意事项(原创)

热门文章

  1. 零基础学python难吗-零基础学Python难吗,或者有什么其他数据加工软件推荐?
  2. python和java哪个好-Python和Java发展前景哪个好?Python开发学习
  3. 语音自训练平台技术详解,快速训练专属语音识别模型
  4. linux 桥接stp原理,Linux操作系统网桥源码框架初步分析
  5. vue的介绍及基本使用(详细,好理解,示例代码)
  6. MongoDB删除文档(非常详细~)
  7. react中将html字符串渲染到页面
  8. 存储图片到第三方云服务器
  9. JavaScript-预解析(变量提升)
  10. MySQL 用gourp by分组后取某一字段最大值