游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4248|回复: 0

?Unity???????(?)

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2018-11-27 14:06:41 | 显示全部楼层 |阅读模式
1.jpg

?/????

?????????????Unity+
https://zhuanlan.zhihu.com/gdguide

????Unity???????(?)

????

?????????????????????????????????????????????

2.jpg

????????5???????????????????????????????

?????????????????????????

3.jpg

?????????????????????????????????Substitute????????????????????

4.jpg

???????DoorManager?????????????????

  1. <p>public class DoorManager:MonoBehaviour</p><p>
  2. </p><p>{</p><p>
  3. </p><p>public Transform mainCamera;//????</p><p>
  4. </p><p>public Transform[]substitutes;//??</p><p>
  5. </p><p>public Transform[]Cameras;//?????</p><p>
  6. </p><p>public Door[]doors;//???</p>
复制代码

???????????

5.jpg

???????????????????

  1. <p>void SetSubstitutePos()//?????????</p><p>
  2. </p><p>{</p><p>
  3. </p><p>//????????????????</p><p>
  4. </p><p>substitutes[0].position=substitutes[1].position=mainCamera.position;</p><p>
  5. </p><p>substitutes[0].rotation=substitutes[1].rotation=mainCamera.rotation;</p><p>
  6. </p><p>//??????????????????????</p><p>
  7. </p><p>Cameras[1].localPosition=substitutes[0].localPosition;</p><p>
  8. </p><p>Cameras[1].localRotation=substitutes[0].localRotation;</p><p>
  9. </p><p>Cameras[0].localPosition=substitutes[1].localPosition;</p><p>
  10. </p><p>Cameras[0].localRotation=substitutes[1].localRotation;</p><p>
  11. </p><p>//????????????????????</p><p>
  12. </p><p>substitutes[2].position=Cameras[1].position;</p><p>
  13. </p><p>substitutes[2].rotation=Cameras[1].rotation;</p><p>
  14. </p><p>substitutes[3].position=Cameras[0].position;</p><p>
  15. </p><p>substitutes[3].rotation=Cameras[0].rotation;</p><p>
  16. </p><p>//??????????????????????</p><p>
  17. </p><p>Cameras[2].localPosition=substitutes[3].localPosition;</p><p>
  18. </p><p>Cameras[2].localRotation=substitutes[3].localRotation;</p><p>
  19. </p><p>Cameras[3].localPosition=substitutes[2].localPosition;</p><p>
  20. </p><p>Cameras[3].localRotation=substitutes[2].localRotation;</p><p>
  21. </p><p>}</p>
复制代码

?????LateUpdate????

6.gif
????????????????????????????????????????????????????????

?????

7.jpg

??????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????Door????????????

  1. <p>public class Door:MonoBehaviour</p><p>
  2. </p><p>{</p><p>
  3. </p><p>public float angle;//????</p><p>
  4. </p><p>public void OpenDoor(Vector3 pos,Quaternion rota)//????????????</p><p>
  5. </p><p>{</p><p>
  6. </p><p>//?????????</p><p>
  7. </p><p>transform.position=pos;</p><p>
  8. </p><p>transform.rotation=rota;</p><p>
  9. </p><p>transform.Rotate(0,angle,0);</p><p>
  10. </p><p>}</p>
复制代码

??????????????????angle?????????180????????????DoorManager??????

  1. <p>Transform[]walls=new Transform[2];//??????????</p><p>
  2. </p><p>int number=0;//???</p><p>
  3. </p><p>public void AddWall(Transform wall)//?????</p><p>
  4. </p><p>{</p><p>
  5. </p><p>int i=number%2;</p><p>
  6. </p><p>if(walls<i>!=null)//?????????????</p><p>
  7. </p><p>ShowWall(walls<i>,true);</p><p>
  8. </p><p>walls<i>=wall;</p><p>
  9. </p><p>if(number&gt;0)</p><p>
  10. </p><p>{</p><p>
  11. </p><p>ShowWall(walls<i>,false);//????</p><p>
  12. </p><p>if(number==1)</p><p>
  13. </p><p>ShowWall(walls[0],false);</p><p>
  14. </p><p>}</p><p>
  15. </p><p>OpenDoor(i);//?????</p><p>
  16. </p><p>number++;</p><p>
  17. </p><p>}</p><p>
  18. </p><p>void ShowWall(Transform wall,bool b)//???</p><p>
  19. </p><p>{</p><p>
  20. </p><p>wall.GetComponent&lt;BoxCollider&gt;().isTrigger=!b;//?????</p><p>
  21. </p><p>wall.GetComponent&lt;SpriteRenderer&gt;().enabled=b;//?????</p><p>
  22. </p><p>}</p><p>
  23. </p><p>void OpenDoor(int i)//?????</p><p>
  24. </p><p>{</p><p>
  25. </p><p>doors<i>.OpenDoor(walls<i>.position,walls<i>.rotation);</p><p>
  26. </p><p>pm.startColor=i==0?Color.red:Color.blue;</p><p>
  27. </p><p>}</p>
复制代码

AddWall?????????????

??????????????????????????????????????????????????????????????????

8.gif

?????????????????????????????????????????

  1. <p>public class Bullet:MonoBehaviour//??</p><p>
  2. </p><p>{</p><p>
  3. </p><p>public float speed;</p><p>
  4. </p><p>Rigidbody rig;</p><p>
  5. </p><p>DoorManager dm;//??????</p><p>
  6. </p><p>Transform wall;</p><p>
  7. </p><p>bool open=true;//????????????</p><p>
  8. </p><p>void Start()</p><p>
  9. </p><p>{</p><p>
  10. </p><p>rig=GetComponent&lt;Rigidbody&gt;();</p><p>
  11. </p><p>dm=FindObjectOfType&lt;DoorManager&gt;();</p><p>
  12. </p><p>}</p><p>
  13. </p><p>void Update()</p><p>
  14. </p><p>{</p><p>
  15. </p><p>rig.velocity=transform.forward*Time.deltaTime*speed;//??</p><p>
  16. </p><p>//??????????????????????</p><p>
  17. </p><p>if(Mathf.Abs(transform.position.z)&gt;8||Mathf.Abs(transform.position.x)&gt;5)</p><p>
  18. </p><p>gameObject.SetActive(false);</p><p>
  19. </p><p>}</p><p>
  20. </p><p>void OnCollisionEnter(Collision other)//????</p><p>
  21. </p><p>{</p><p>
  22. </p><p>if(other.collider.CompareTag("Wall"))</p><p>
  23. </p><p>{</p><p>
  24. </p><p>//???????????????????????</p><p>
  25. </p><p>if(open&&wall!=other.transform)</p><p>
  26. </p><p>{</p><p>
  27. </p><p>open=false;</p><p>
  28. </p><p>wall=other.transform;</p><p>
  29. </p><p>dm.AddWall(other.transform);</p><p>
  30. </p><p>Invoke("ColdOpen",0.2f);//0.2??????</p><p>
  31. </p><p>}</p><p>
  32. </p><p>}</p><p>
  33. </p><p>gameObject.SetActive(false);</p><p>
  34. </p><p>}</p><p>
  35. </p><p>void ColdOpen()</p><p>
  36. </p><p>{</p><p>
  37. </p><p>open=true;</p><p>
  38. </p><p>}</p>
复制代码

9.gif

???????????DoorManager???????????????

????

?????????????????????

10.jpg

?????????????????????????????????????????????????????????????

?????????????????????????????????????????substitute????substitute?????????????????????substitute???????????????????DoorManager????

  1. <p>void DeliveryPlayer()//????</p><p>
  2. </p><p>{</p><p>
  3. </p><p>if(number&gt;=2)//???????????</p><p>
  4. </p><p>{</p><p>
  5. </p><p>DeliveryCondition(0,substitutes[0].localPosition.z&gt;0);</p><p>
  6. </p><p>DeliveryCondition(1,substitutes[1].localPosition.z&lt;0);</p><p>
  7. </p><p>}</p><p>
  8. </p><p>}</p><p>
  9. </p><p>void DeliveryCondition(int i,bool b)//??????</p><p>
  10. </p><p>{</p><p>
  11. </p><p>int j=Mathf.Abs(i-1);//???????</p><p>
  12. </p><p>//????????????(???)?????</p><p>
  13. </p><p>if(Mathf.Abs(substitutes<i>.localPosition.x)&lt;0.3f&&Mathf.Abs(substitutes<i>.localPosition.y)&lt;1&&b)</p><p>
  14. </p><p>{</p><p>
  15. </p><p>//????????????</p><p>
  16. </p><p>player.position=Cameras[j].position;</p><p>
  17. </p><p>Quaternion r=Cameras[j].rotation;</p><p>
  18. </p><p>player.rotation=new Quaternion(player.rotation.x,r.y,player.rotation.z,r.w);</p><p>
  19. </p><p>}</p><p>
  20. </p><p>}</p><p></p>
复制代码

?DeliveryPlayer?????LateUpdate??????

????

111.gif

???????????????????????????????????????????????????????????????????????????????????????????????????????DoorManager??

  1. <p>public void DeliveryBullet(Transform bullet,Transform wall)//????</p><p>
  2. </p><p>{</p><p>
  3. </p><p>bullet.parent=wall;//???????????</p><p>
  4. </p><p>//???????????</p><p>
  5. </p><p>Vector3 lp=bullet.localPosition;</p><p>
  6. </p><p>Quaternion lr=bullet.localRotation;</p><p>
  7. </p><p>//????????????</p><p>
  8. </p><p>if(wall==walls[0])</p><p>
  9. </p><p>bullet.parent=walls[1];</p><p>
  10. </p><p>else</p><p>
  11. </p><p>bullet.parent=walls[0];</p><p>
  12. </p><p>//????????????????</p><p>
  13. </p><p>bullet.localPosition=new Vector3(-lp.x,lp.y,-lp.z);</p><p>
  14. </p><p>bullet.localRotation=lr;</p><p>
  15. </p><p>bullet.Rotate(0,180,0,Space.World);</p><p>
  16. </p><p>}</p><p>
  17. </p><p>??????????????????</p><p>
  18. </p><p>void OnTriggerEnter(Collider other)//????</p><p>
  19. </p><p>{</p><p>
  20. </p><p>wall=other.transform;//???????</p><p>
  21. </p><p>if(wall!=transform.parent)//?????(?)????????</p><p>
  22. </p><p>dm.DeliveryBullet(transform,wall);//????</p><p>
  23. </p><p>}</p><p></p>
复制代码

?????

20181127135802.gif

13.jpg

???????????????????????????????????????????????????????????????????????????????????????????????????????????????Door???????????

  1. <p>Vector3 pos;//??</p><p>
  2. </p><p>Vector3 scale;//??</p><p>
  3. </p><p>public float angle;//????</p><p>
  4. </p><p>public Transform CopyDoor;//??????</p><p>
  5. </p><p>void Start()</p><p>
  6. </p><p>{</p><p>
  7. </p><p>//?????????</p><p>
  8. </p><p>pos=transform.position;</p><p>
  9. </p><p>scale=transform.localScale;</p><p>
  10. </p><p>}</p><p>
  11. </p><p>void Update()</p><p>
  12. </p><p>{</p><p>
  13. </p><p>//??????</p><p>
  14. </p><p>if(pos!=transform.position)</p><p>
  15. </p><p>{</p><p>
  16. </p><p>//?????????</p><p>
  17. </p><p>pos=transform.position;</p><p>
  18. </p><p>transform.localScale=Vector3.zero;</p><p>
  19. </p><p>}</p><p>
  20. </p><p>//??????</p><p>
  21. </p><p>transform.localScale=Vector3.Lerp(transform.localScale,scale,Time.deltaTime*10);</p><p>
  22. </p><p>if(CopyDoor.gameObject.activeInHierarchy)//?????????????</p><p>
  23. </p><p>ShowPrefabDoor();</p><p>
  24. </p><p>}</p><p>
  25. </p><p>void DisplayDoor()//????</p><p>
  26. </p><p>{</p><p>
  27. </p><p>//??????????????????</p><p>
  28. </p><p>CopyDoor.position=pos;</p><p>
  29. </p><p>CopyDoor.rotation=transform.rotation;</p><p>
  30. </p><p>CopyDoor.localScale=scale;</p><p>
  31. </p><p>CopyDoor.gameObject.SetActive(true);</p><p>
  32. </p><p>}</p><p>
  33. </p><p>void ShowPrefabDoor()//??????</p><p>
  34. </p><p>{</p><p>
  35. </p><p>//????</p><p>
  36. </p><p>CopyDoor.localScale=Vector3.Lerp(CopyDoor.localScale,Vector3.zero,Time.deltaTime*10);</p><p>
  37. </p><p>if(CopyDoor.localScale.x&lt;0.1f)//?????????</p><p>
  38. </p><p>CopyDoor.gameObject.SetActive(false);</p><p>
  39. </p><p>}</p>
复制代码

????????????

14 (1).gif

??????????????????????????????

15.jpg

??

16.jpg

???????????????????????????

???DoorManager????????????????????????????????

  1. <p>void SwitchCameraDepth()//???????????</p><p>
  2. </p><p>{</p><p>
  3. </p><p>//????????????????????????Z????,??????????</p><p>
  4. </p><p>if(Mathf.Abs(substitutes[0].localPosition.y-substitutes[1].localPosition.y)&lt;0.1f)</p><p>
  5. </p><p>{</p><p>
  6. </p><p>if(Mathf.Abs(substitutes[0].localPosition.z)&lt;Mathf.Abs(substitutes[1].localPosition.z))</p><p>
  7. </p><p>SetDepth(Cameras[0],Cameras[1]);</p><p>
  8. </p><p>else</p><p>
  9. </p><p>SetDepth(Cameras[1],Cameras[0]);</p><p>
  10. </p><p>}</p><p>
  11. </p><p>else//?????????????????Y????,?????????????</p><p>
  12. </p><p>{</p><p>
  13. </p><p>if(Mathf.Abs(substitutes[0].localPosition.y)&lt;Mathf.Abs(substitutes[1].localPosition.y))</p><p>
  14. </p><p>SetDepth(Cameras[0],Cameras[1]);</p><p>
  15. </p><p>else</p><p>
  16. </p><p>SetDepth(Cameras[1],Cameras[0]);</p><p>
  17. </p><p>}</p><p>
  18. </p><p>}</p><p>
  19. </p><p>void SetDepth(Transform camera1,Transform camera2)//???????????????</p><p>
  20. </p><p>{</p><p>
  21. </p><p>camera1.GetComponent&lt;Camera&gt;().depth=-3;</p><p>
  22. </p><p>camera2.GetComponent&lt;Camera&gt;().depth=-2;</p><p>
  23. </p><p>}</p><p></p>
复制代码

????LateUpdate???????????????

???????????????????????????

17.jpg

???????????????

18.jpg

?????????????????????????????????????????????????????????????????????

????????????????????????????????????

19.jpg

??????????

?????????????????????????????????????????????

??????????????????????????????


https://github.com/wushupei/TransmissionGate.gitgithub.com


???????????????Unity?????????


http://levelpp.com/


????????


https://space.bilibili.com/38043731/#/


??QQ????869551769

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-9-14 14:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表