怎么在unity建一个开放的unity3d 抛物线运动

抛物线怎么做? 数学不行_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:58,643贴子:
抛物线怎么做? 数学不行收藏
比如炮弹的轨迹,先是瞄准,然后炮弹一个抛物线打到我所瞄准的点上...怎么个思路...最近脑筋不好使了...那个最好不要用三点抛物线公式了,那公式太复杂
第九城市是游戏教育领域的上市公司,专业培训unity3d,游戏开发选九城unity3d,咨询热线:021-
往炮弹上加个粒子效果
生命周期 粒子数量调到最强
知道目标点的话,用Vector3.Slerp()就行
垂直方向和水平方向分开,自己算就行了,为什么不直接用物理刚体呢
知道发射初始速度和距离,求角度,你就把物理公式套上呗
s=ut+1/2at² 其中: s=distance (距离) u=initial velocity(弹丸初速)也写成 Muzzle velocity v=final velocity (落点终速)这个速度在方程式里面没有体现 a=acceleration(加速度) t=time passed(时间)还有一个阻力,,
using UnityEusing System.Cpublic class ProjectileTest : MonoBehaviour{public GameOpublic float speed = 10;private float distanceToTprivate bool move =void Start(){distanceToTarget = Vector3.Distance(this.transform.position, target.transform.position);
StartCoroutine(Shoot());}IEnumerator Shoot(){while (move){Vector3 targetPos = target.transform.this.transform.LookAt(targetPos);float angle = Mathf.Min(1, Vector3.Distance(this.transform.position, targetPos) / distanceToTarget) * 45;this.transform.rotation = this.transform.rotation * Quaternion.Euler(Mathf.Clamp(-angle, -42, 42), 0, 0);float currentDist = Vector3.Distance(this.transform.position, target.transform.position);print(&currentDist& + currentDist);if (currentDist & 0.5f)move =this.transform.Translate(Vector3.forward * Mathf.Min(speed * Time.deltaTime, currentDist));}}}
//两个Cube,一个作为目标,一个作为本物体using UnityEusing System.Cpublic class ProjectileTest : MonoBehaviour{public GameOpublic float speed = 10;private float distanceToTprivate bool move =void Start(){distanceToTarget = Vector3.Distance(this.transform.position, target.transform.position);
StartCoroutine(Shoot());}IEnumerator Shoot(){while (move){Vector3 targetPos = target.transform.this.transform.LookAt(targetPos);float angle = Mathf.Min(1, Vector3.Distance(this.transform.position, targetPos) / distanceToTarget) * 45;this.transform.rotation = this.transform.rotation * Quaternion.Euler(Mathf.Clamp(-angle, -42, 42), 0, 0);float currentDist = Vector3.Distance(this.transform.position, target.transform.position);print(&currentDist& + currentDist);if (currentDist & 0.5f)move =this.transform.Translate(Vector3.forward * Mathf.Min(speed * Time.deltaTime, currentDist));}}}
吧主的远古巨坟
这个做抛物线,适合两点之间这个适合弓箭,愤怒小鸟等
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或主题 : unity可以做出 愤怒小鸟 那个抛物线效果吗(3d 空间的)
级别: 精灵王
UID: 42990
发帖: 1582
可可豆: 13015 CB
威望: 12952 点
在线时间: 1819(时)
发自: Web Page
来源于&&分类
unity可以做出 愤怒小鸟 那个抛物线效果吗(3d 空间的)&&&
如题, unity有没办法实现, 就是有空间感的哪种抛物线效果
级别: 新手上路
可可豆: 310 CB
威望: 310 点
在线时间: 72(时)
发自: Web Page
回 楼主(wengxianxun) 的帖子
可以的~&&如果物件有rigidbody屬性,可用 rigidbody.AddForce(x,y,z);x:X軸 y:Y軸 z:Z軸
Cocos2D-X多平台遊戲開發部落格 !!!http://cocos2d-xdevnote.blogspot.tw/Unity3D專業遊戲開發引擎部落格 !!!http://zghudn.blogspot.tw/
级别: 侠客
UID: 121830
可可豆: 9 CB
威望: 249 点
在线时间: 93(时)
发自: Web Page
有个Unity插件叫Vectrosity,专门绘制线的(直线、样条曲线、贝塞尔曲线)。
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法,
模拟绝对真实。
和往常一样,先说原理。就是抛物运动,在垂直方向上做加速度运动,在水平方向上,做匀速运动。
在unity上的具体实现为,使用transform进行位移模拟。至于为何不使用刚体的物理模拟,用刚体的物理模拟太占用CPU的计算。
那么如何使用transform模拟呢?让物体同时在两个方向产生位移就行了,一个是初速度方向,一个是垂直方向。
垂直方向的速度 = a*t,a代表重力加速度,t代表已经运行的时间。
新建一个物体,添加rigidbody,然后取消重力选项,因为我们在脚本中模拟其重力的大小。添加下列脚本
using UnityE
using System.C
public class newDus : MonoBehaviour {
& & public float Power = 10;//这个代表发射时的速度/力度等,可以通过此来模拟不同的力大小
& & public float Angle = 45;//发射的角度,这个就不用解释了吧
& & public float Gravity = -10;//这个代表重力加速度
& & private Vector3 MoveS//初速度向量
& & private Vector3 GritySpeed = Vector3.//重力的速度向量,t时为0
& & private float dT//已经过去的时间
& & private Vector3 currentA
& & // Use this for initialization
& & void Start()
& & & & //通过一个公式计算出初速度向量
& & & & //角度*力度
& & & & MoveSpeed = Quaternion.Euler(new Vector3(0, 0, Angle)) * Vector3.right * P
& & & & currentAngle = Vector3.
& & // Update is called once per frame
& & void FixedUpdate()
& & & & //计算物体的重力速度
& & & & //v =
& & & & GritySpeed.y = Gravity * (dTime += Time.fixedDeltaTime);
& & & & //位移模拟轨迹
& & & & transform.position += (MoveSpeed + GritySpeed) * Time.fixedDeltaT
& & & & currentAngle.z = Mathf.Atan((MoveSpeed.y + GritySpeed.y) / MoveSpeed.x) * Mathf.Rad2D
& & & & transform.eulerAngles = currentA
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10753次
排名:千里之外
原创:43篇
评论:10条
(3)(2)(5)(2)(1)(7)(5)(3)(13)(7)如何不用刚体,做出炮弹抛物线轨迹?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:58,643贴子:
如何不用刚体,做出炮弹抛物线轨迹?收藏
如题~麻烦各位帮我解答一下!非常感谢!
第九城市是游戏教育领域的上市公司,专业培训unity3d,游戏开发选九城unity3d,咨询热线:021-
代码写抛物线公式...怎么样?
听说iTween
但是我不懂
请问楼主,你的问题解决了吗?我也遇到同样的问题,给定初始速度和方向,如何模拟出它的抛物线轨迹???
小学数学太差。二元一次方程的曲线都不会用。
最完美的就是贝塞尔曲线了。贝塞尔在许多曲线领域都运用得到
无论是愤怒的小鸟,还是弓箭发射功能,亦或者模拟炮弹受重力影响等抛物线轨迹,都可以使用本文的方法:如果需要“金手指”功能,即两点之间自动轨迹,可以这样:
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 unity 抛物线 的文章

 

随机推荐