xiaozongpeng 发表于 2022-5-5 20:10

Unity3D新手入门教程(四)预制体,动态管理对象,物理系统,射击游戏实例

二十一 预制体


[*]预制体
*.prefab

[*]预制体创建
仅包含引用信息

[*]预制体的实例
UpPack取消关联

[*]预制体的编辑

[*]单独编辑
双击资源管理器中prefab

[*]原位编辑
选择场景中预制体,点击open显示模式:normal/gray/hidden

[*]覆盖编辑
选择场景中预制体,直接编辑overeides|Appyy或Revert

多级节点
二十二 动态创建实例


[*]动态创建实例
使用PrefabObject.Instantiate(obj perfab,parent)

[*]实例的初始化
position位置eulerAngles旋转Script

[*]实例销毁
Object.Destroy(obj)超类静态方法

[*]练习:火控,炮塔控制
创建炮塔,炮管,子弹预制体
[*]脚本

[*]火控
创建子弹,位置,角度,速度,距离,生命周期

[*]子弹脚本
控制自毁别绑到炮塔上了

[*]炮塔控制

[*]控制炮塔旋转
如果要限制转动角度使用转动角度变量eulerAngles范围为
控制射击



二十三 物理系统


[*]物理系统
Rigidbody刚体组件,拥有重力

[*]物理碰撞
Collider碰撞体组件

[*]反弹与摩擦

[*]Physici Material物理材质
Friction摩擦Bounciness反弹


二十四 碰撞检测


[*]运动学刚体
刚体组件:Kinematic无重力

[*]碰撞检测
碰撞体组件:Trigger触发器
[*]消息函数OnTriggerEnter(Collider other)
other.gameObject对方节点


[*]碰撞体的编辑
球形碰撞体盒形碰撞体
练习 击毁目标
二十五 射击游戏项目实例


[*]需求分析
移动射击打怪音乐

[*]功能设计

[*]角色
主角怪物子弹特效

[*]功能

[*]创建对象
子弹生成销毁怪物的生成销毁

[*]管理对象
主角移动怪物移动

[*]交互逻辑
子弹碰撞
特效背景音乐


[*]功能实现
创建所用预制体分功能编写脚本拖拖拽拽
测试
附件 脚本汇总

//脚本    //this当前脚本组件继承自MonoBehaviour      //消息函数    void Start()    void Update()    //获取物体,读写其属性    //获取当前物体    GameObject obj = this.gameObject;    //获取场景内其他物体    flag = GameObject.Find("红旗");      //获取位置    //this.gameObject.transform等同于this.transform    Vector3 pos = this.transform.position;    pos = this.transform.localPosition;    //访问父子层级    this.transform.parent    this.transform.parent.gameObject//获取父节点    public Transform RusCude;    Transform child = RusCude.GetChild(index);      //资源使用    //音频和材质,准备好材料和player    public Material[] colors;    public AudioClip[] musics;    MeshRenderer mr;    AudioSource musicPlayer;      musicPlayer.clip = musics;    musicPlayer.Play();    mr.material = colors;    //物体运动    //匀速运动:根据速度设置前进距离    distance = speed * Time.deltaTime;    this.transform.Translate(0, 0, distance);      //运动方向    this.transform.LookAt(flag.transform);      //匀速转动    this.gameObject.transform.localEulerAngles += new Vector3(0, rotationSpeed * Time.deltaTime, 0);      float rotationSpeed = 120;    this.transform.Rotate(0, rotationSpeed * Time.deltaTime, 0, Space.Self);    //定时调用    Invoke("ChangeColor", 4);//递归用法模拟重复调用    //监听输入    Input.GetMouseButtonDown(0)    Input.GetKey(KeyCode.W)//使用预制体      //实例化,使用    public GameObject bulletPre;    GameObject bullet = Instantiate(bulletPre,bullets);    bullet.transform.position = cannonMouth.position;    bullet.transform.rotation = cannonDirection.rotation;    //超类静态方法销毁    Object.Destroy(this.gameObject);//物理碰撞    //消息函数,Collider类    private void OnTriggerEnter(Collider other)//全局设置    //设置近似帧率    Application.targetFrameRate = 60;      //常用类的静态属性&方法    //时间    Time.time    Time.deltaTime    //屏幕    Screen.width    //输入    Input.mousePosition    //摄像机    Camera.main.WorldToScreenPoint(this.transform.position)    //数学    Random.Range(int min,int max)
页: [1]
查看完整版本: Unity3D新手入门教程(四)预制体,动态管理对象,物理系统,射击游戏实例