许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  UnityCS项目

UnityCS项目

阅读数 5
点赞 0
article_banner

玩家的开镜和拾取钥匙开门(其实就碰到钥匙)

  1. 我们要先在层级视图里去创建一个新的Camera,然后把新的Camera里面的耳朵删掉也就是Audio Listener组件

  1. 在把我们新的相机拖到玩家视角的前面一点点,在把Camera组件里的Field Of View值调到你想要的值(往左边就放大)

  1. 然后就完成了开镜的功能(如果想好看点可以加点UI,新相机的大小要自己调试哦,在Viewport Rect里调试哦)。

  1. 拾取钥匙开门就做一个简单的判断,我们先写一个触发器(当然也可以写一个碰撞器)我们可以用OnTriggerEnter就只需要接触的那一阵调用,我是写了两个一个是碰到钥匙然后就让我设置的布尔值变成true,这样我们的门就能判断到拾取过钥匙了,然后我是想让门慢慢的往下移动所以用了OnTriggerStay接触的每帧都被调用直到看不见。

  1.     // 触发接触的那一帧被调用
  2.     void OnTriggerEnter(Collider o)
  3. {
  4. if (o.CompareTag(StaticGameResources.keyTag))
  5. {
  6. AudioSource.PlayClipAtPoint(keyAudio, Camera.main.transform.position, StaticGameResources.a1);
  7. StaticGameResourcesOne.GameOne().hasKey = true;
  8. Destroy(o.gameObject, StaticGameResources.b1);
  9. }
  10. }
  11.     //触发接触的每帧都被调用
  12. void OnTriggerStay(Collider o)
  13. {
  14. if (o.CompareTag(StaticGameResources.doorTag) && StaticGameResourcesOne.GameOne().hasKey)
  15. {
  16. //失败告终(正在努力)
  17. //door.transform.position = new Vector3(door.transform.position.x, door.transform.position.y - 1f, door.transform.position.z);
  18. AudioSource.PlayClipAtPoint(doorAudio, Camera.main.transform.position, StaticGameResources.a1);
  19. Destroy(door);
  20. }
  21. else if (o.CompareTag(StaticGameResources.doorTag) && StaticGameResourcesOne.GameOne().hasKey == false)
  22. {
  23. StaticGameResourcesOne.GameOne().playerHP--;
  24. }
  25. }
csharp
运行

敌人的克隆

  1. 首先我们在管理器类里去克隆敌人就得获取敌人预制体(这边我是用动态加载去获取预制体的不想用的同学可以去公开对象直接把预制体拖进来)

  1. public class StaticGameResourcesOne : MonoBehaviour {
  2. private GameObject dog;
  3. void Start () {
  4. dog = Resources.Load<GameObject>(StaticGameResources.dogPath);
  5. }
  6. }
csharp
运行
  1. 今天我们用不一样的克隆生成以某个点为中心随机克隆,先写个书去接收随机数,在去用二维向量去接收我们从原点(0,0)坐标上获取任意的一个方向的向量,获取我们刚刚得到得向量并且大小为1,用三维向量去接收我们随机点得位置,在去用然后我们用for循环去克隆3个敌人。记得在Start里用Invoke去调用;(当然同学也可以用协程去写)

  1. public class StaticGameResourcesOne : MonoBehaviour {
  2. private GameObject dog;
  3. private Transform campsite;//中心点
  4.     void Start () {
  5. dog = Resources.Load<GameObject>(StaticGameResources.dogPath);
  6.        campsite = GameObject.Find(StaticGameResources.campsite).transform;
  7.         Invoke(StaticGameResources.dogCole, StaticGameResources.a1);
  8. }
  9.     void DogCole()
  10. {
  11. for (int i = 0; i < 3; i++)
  12. {
  13. int a = Random.Range(2,5);//随机2--5米范围
  14. Vector2 b = Random.insideUnitCircle;//从原点(0,0)坐标上获取任意一个方向的向量
  15. Vector2 c = b.normalized;//获取向量的单位向量:只有方向,大小为为1
  16. Vector3 d = new Vector3(campsite.position.x+c.x*a, campsite.position.y, campsite.position.z+c.y*a);//随机点的位置
  17. Instantiate(dog,d,Quaternion.identity);
  18. }
  19. }
  20. }
csharp
运行

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空