0基础开发游戏的第三课-使用Playmaker制作坦克开炮模块

在这里插入图片描述

git地址:https://gitee.com/asiworld/MakeAModelFrom-code

csdn博客地址:https://blog.csdn.net/JianShengShuaiest

bilibili地址:https://space.bilibili.com/15766978

效果预览

  1. 移动模块+开炮

Layers修改

  1. 添加layers

    1. 我方子弹

    2. 我方坦克

    3. 敌方子弹

    4. 敌方坦克

    5. 砖块

    6. 地形

  2. 修改layers碰撞

    1. Edit->project Setting

    2. physics

    3. 取消 我方坦克*我方子弹

    4. 取消 地方坦克*地方子弹

  3. 设置地形

    1. 设置layer-地形

制作敌人的坦克

  1. 拖出一个坦克

  2. 设置坐标<0,0,10>

  3. 创建一个材质球-红色

  4. 设置layer-敌方坦克

  5. 设置坦克的rigidbody

  6. 添加CapsuleCollider

制作炮弹

  1. 拖出一个炮弹

  2. 设置坐标<0,1.5,2>

  3. 设置layer

  4. 添加rigidbody

  5. 添加meshcollider

  6. 修改meshcollider convex = true

  7. is trigger = true

  8. 添加playmaker

    1. 添加状态

      1. 子弹出生
      2. 子弹运行
      3. 攻击别人
    2. 添加事件

      1. 开火
      2. 攻击
    3. 添加动作+变量

      1. 子弹出生
        1. 去除刚体
      2. 子弹运行
        1. set parent
        2. 设置刚体
        3. 设置无重力
        4. 设置前方Transform Direction
          1. z=20
          2. 添加变量 前方
        5. 添加力Set Velocity
          1. 添加vector = 前方
        6. 添加一个碰撞Trigger Event
          1. sendevent=攻击
          2. storecollider = 击中目标
      3. 攻击别人
        1. Debug Log = 击中目标
        2. Destroy Self

制作我方坦克的开炮模块

  1. 拖出有移动模块的我方坦克

  2. 设置坐标<0,0,0>

  3. 添加一个炮弹在炮弹口,起名炮弹位置

  4. 设置layer-我方坦克

  5. 设置坦克的rigidbody

  6. 添加CapsuleCollider

  7. 添加装弹UI

    1. 添加canvas

    2. 修改canvas的render mode为word

    3. 修改RectTransform <0 1 0> <20 20> <0.5 0.5> <90 0 0> <0.05 0.05 0.05>

    4. 添加slider

    5. 修改锚点和坐标

    6. 修改fill的image的source

    7. 修改image的image type 为filed

    8. fill method 为 radial 360

  8. 添加playmaker

    1. 添加状态

      1. 装弹
      2. 装弹完成
      3. 等待开火
      4. 开火
    2. 添加事件

      1. 开火

在这里插入图片描述

  1. 添加动作+变量

    1. 装弹
      1. wait = 装弹时间
      2. Activate Game Object = UI
      3. Do Slider
    using UnityEngine;
    using UnityEngine.UI;
    using DG.Tweening;
    
    namespace HutongGames.PlayMaker.Actions
    {
    
        [ActionCategory("Dotween")]
        public class DoSlider : FsmStateAction
        {
            public Slider slider;
            public FsmFloat m_fBeginValue;
            public FsmFloat m_fEndValue;
            public FsmFloat m_fTime;
    
            // Code that runs on entering the state.
            public override void OnEnter()
            {
                slider.value = m_fBeginValue.Value;
    
                slider.DOValue(m_fEndValue.Value, m_fTime.Value);
    
                Finish();
            }
     }
    }
    
    
    1. 装弹完成
      1. Get Rotation 炮弹角度
      2. Create Object 炮弹
      3. Set Parent 炮弹位置
    2. 等待开火
      1. Get Key down 空格 space
    3. 开火
      1. Send Event = 开火
发布了11 篇原创文章 · 获赞 6 · 访问量 553

猜你喜欢

转载自blog.csdn.net/JianShengShuaiest/article/details/104431724
今日推荐