【小松教你手游开发】【unity实用技能】Unity 代码实现抛体运动

项目最近的一个需求是做掉落,就是打完怪爆装备,不想用碰撞因为要给地板和掉落的物品都加上碰撞体太损耗了,所以决定由代码计算。

 

不过这里有个前提,因为掉落要掉到地板上这个其实不好计算,因为很难判断哪里是地板

我们项目用了寻路,所以我选择的方法是先随机掉落方向,给一定的掉落距离,找出最近的寻路点,这个寻路点作为掉落的终点。

 

掉落主要分几个状态:

1.实例化一个物品

2.随机一个方向,抛物线移动物品

3.掉落地板后检测与主角距离是否在区域内,区域内吸附

4.区域外的物品在指定时候后吸附。

5.销毁回收物品

 

因为公司网络屏蔽无法直接获取代码,挑着重点来讲。

1.实例化没什么好讲的。

2.随机一个方向就用Random.insideUnitCircle获取一个vector2的随机值。

int radius =2//掉落半径
Vector2 random = Random.insideUnitCircle;
 
//m_position是掉落物品的坐标
Vector3 relativePosition = new Vector3(m_position.x + random.x * radius,m_position.y,m_position.z + random.y.*radius);//获取掉落随机方向上的准备掉落的点(这时候y值不确定,所以不是最终值)
vector3 genPosition = NavSampelPosition(relativePosition ) ;//获取最近的寻路点,这个其实是同事封装接口,但里面也没什么代码,用的也是unity自带接口

而根据抛物线移动物品用这个

http://www.cnblogs.com/jqg-aliang/p/4806017.html

这个demo主要是把移动分两部分,一个是按两点直接的方向,一个是重力方向

使用这个demo就可以做到,给定时间,给两个点,就可以像抛物线一样从起点到终点。  

在开启移动的同时,打开一个定时器,并设定与上面一样的时间(如果Update的不及时,可以定的时间少0.2f秒)

计时器到时就停止移动并跳到第三步。

这样子的做法就不用碰撞并到指定点了。

之后就按一般的做法


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值