【教程】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 = 开火
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢斯

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值