射击游戏中功能的实现

物体跟随鼠标旋转:主方法,transform.LookAt(point:Vector3)。用鼠标位置产生一条射线,Camera.main.ScreenPointToRay (Input.mousePosition)。使用Physics.Raycast()检测碰撞,当碰到碰撞体后,输出一个RaycastHit碰撞信息,把RayCastHit.point转给主方法中的point即可让主角朝向鼠标,注意Y轴固定!

三维物体移动:使用方法rigidbody.MovePosition(position : Vector3) : void 。当前位置加减键盘操作的偏移量,即:position=transform.position+new Vector3(Horizontal,0,Vertical)*speed*Time.deltaTime。

播放走动动画:在主角上面添加Animator组件,设置动画状态关系图,在Paramters中添加标志位如:Move、Dead等,并设置好Conditions。在脚本中调用Animator.SetBool(parameters:string,bool:bool)来激活动画。通过判断Horizontal或Vertical是否不等于0来判断主角是否移动,来播放动画。

受伤变红动画:当受到伤害时meshRender.material.color = Color.red物体变红,然后再慢慢恢复成原色

meshRender.material.color = Color.Lerp(meshRender.material.color, Color.white, smoothing * Time.deltaTime) static function Lerp (a : Color, b : Color, t : float) : Color  "t"是夹在0到1之间的值。当t是0时返回颜色a。当t是1时返回颜色b。

受伤减血:自定义一个方法。通过调用带形参的方法来实现受一次伤,减一次血。该方法中用hp自减形参。在使用时,只需传递一个形参即可。

间隔开枪:开枪是一下一下播放。因为要按下鼠标后才可以开始自动打枪,所以不能在非Update()中使用InvokeRepeating()方法播放动画(该方法一开始就会打枪),而只能在Update()中用计时来播放动画。如下:

timer += Time.deltaTime;//开始计时。

if (timer>1/shootRata)//当累计的时间大于开一枪的时间(开枪间隔1/shootRata)时开枪

{timer -= 1/shootRata;Shoot();}//减去一个开枪间隔时间使其不符合开枪条件,继续计时累积时间。

子弹轨迹:添加LineRenderer组件,使用LineRenderer.SetPostion(端点号:int,生成位置:Vector3)方法。一个端点在抢口,一个端点在枪口前方的碰撞体处。先以枪口为起始点,朝枪口前方画一条射线,并通过Physics.Raycast射线检测,并输出一个RaycastHit碰撞信息得到其点的Vector3。

追逐主角:使用导航网格寻路。首先烘焙生成环境的导航网格,然后给敌人添加导航组件NavMeshAgent,挂上脚本并使用NavMeshAgent.SetDestination(Vector3)方法(设置目标)。

敌人攻击:添加球形collider,使用OnTriggerStay(Collider other)方法,碰触触发器并停留时会持续调用此方法。在此方法下面调用TakeDamage()受伤方法。注意定义两时间变量,使方法受到时间周期控制。

相机跟随:在Camera写脚本,让相机的transform.position=用主角position+相机与主角位置差 。为了产生缓入缓出效果可使用方法Vector3.Lerp(from : Vector3, to : Vector3, t : float) : Vector3 。t=变量*Time.deltaTime(变量值一般在2左右)。注:Vecotr3.Lerp(),是返回from和to中的任何一值;当t=0返回from,当t=1返回to。使用FixedUpdate()这样主角不会颤抖。

播放粒子:particleSystem.Play()。在目标物体上播放:particleSystem.transform.position = position;

物体死亡声音:AudioSource.PlayClipAtPoint(clip : AudioClip, position : Vector3, volume : float = 1.0F),在制定点播放声音剪辑。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值