做一款基于子弹时间的小游戏(前篇)

目的

  1. 想做一款这样的游戏:玩家扮演一个忍者,忍者拥有持续跳跃和进入子弹时间的能力,玩家需要使用这些能力规避陷阱和敌人。敌人拥有感知视野,当玩家被敌人发现,敌人会对玩家发起弹幕(雷电游戏那种)攻击,玩家可以利用子弹时间(这个时候子弹运动很慢)进行规避。
  2. 想进一步学习和时间unity shader,用shader实现卡通渲染,灯光以及雾效等。
    游戏大概是这样的:(在unity的免费商城里没有找到合适的忍者素材,暂时用圆球代替)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

UI

用UGUI创建UI,UI包括金币栏,血条,防御条,菜单按钮,开始按钮,重新开始按钮,升级按钮(用金币升级生命值和防御值)。
UI是这样子的:
在这里插入图片描述在这里插入图片描述

游戏核心玩法

子弹时间

看过黑客帝国的同学都知道,电影中有一种子弹时间的设定,就是所谓的慢动作,通过unity的内置函数来对时间进行缩放:

Time.timeScale = 0.12f;//0为完全暂停,1为正常
操作

点击鼠标进入子弹时间(仍旧会运动,只是很慢),保持可以选择跳跃方向,释放鼠标确定跳跃,并在该方向对小球刚体施加一个瞬间力。

rb.velocity = Vector2.zero;
rb.AddForce (bashDirection * bashForce, ForceMode.Impulse);//弹射
生成预判轨迹

为了方便玩家预判,需要在选择跳跃方向时即时生成一个预判轨迹,该预判轨迹主要考虑重力和射线碰撞,而小球是一个球形碰撞器,所以在墙上进行近近距离跳跃时,会达不到预期情况,所以预判轨迹只是一个参考。

上一小节中,对小球施加的是瞬时力模式(ForceMode.Impulse),采用了刚体自身的质量Mass,作用时间为固定值1.根据动量公式:
f ∗ t = m ∗ v f*t=m*v ft=mv
可以算的初始速度为:
v = f ^ / v v=\hat f/v v=f^/v
f ^ \hat f f^表示力向量。
对预判轨迹的渲染采用LineRender组件。先算出一路径采样点,然后设置到LineRender组件中。
代码:

private void generatePath(Vector3 startVelocity)
    {
   
        Vector3[] PathPos =new Vector3[pathPoints];
        RaycastHit hit;
        Vector3 pos = transform
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值