中易网

Unity问题:在Update里面,往刚体加力,却不能弹起来。(代码有具体注释)急急急

答案:1  悬赏:30  
解决时间 2021-02-16 15:11
我是新学的unity,想做一个简单的来回弹动的球体,球体上已经加上了刚体了; 在Start里面的加力使可以弹起来的,但是运行到了Update里面的却不能。 具体是这样的,经过测试,确定是if(temp < preballyside){ }这个语句出问题,但是我并不觉得有什么逻辑错误。但是如果把这个if语句注释掉,球可以弹动,但是由于有几率会发生“一次过被加了好几个力”的问题,为了控制在上升过程中,只加一个力,所以就用了这个if(temp < preballyside){ }来判断是否在上升过程。 请各路神帮忙看看,到底是哪出了问题。 具体代码如下: var oldballyside:float; //用于记录球的初始位置 var balldown:boolean; //用于判断球是否在下降 var preballyside:float; //用于记录球前一帧的位置 function Start () { oldballyside = gameObject.Find("ball").transform.position.y; gameObject.Find("ball").rigidbody.AddForce(Vector3(0,1,0)*500); //一开始加力 balldown = false; //球在上升 preballyside = oldballyside; //记录这一帧,球的位置 } function Update () { var temp:float = gameObject.Find("ball").transform.position.y; //临时变量 if(temp < preballyside){ //判断当前是否在下降 print("判断中.....temp < preballyside"+(temp < preballyside)); balldown=true; //是在下降。将balldown赋值为true if(temp <= oldballyside ){ //判断是否回到了一开始的位置,就是是否着地 print("运行到加力这里了!"); balldown=false; //是!然后就将balldown赋值为false gameObject.Find("ball").rigidbody.AddForce(Vector3(0,1,0)*500); //又往ball加力 } } preballyside = temp; //将当前帧位置记录下 }
最佳答案
来回弹动是吧,用OnTriggerEnter检测,当球体开始接触地面时加力
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问有那款手机能支持PDF或CAJ阅读软件,也就
叫呱呱酸菜鱼怎么去啊,有知道地址的么
请问有没有人知道北京百圆皮肤科可不可以刷医
怪兽哥斯拉讲的什么?我记得以前看过一部怪兽
我家在安庆市,我要去江镇应该怎么去啊? 我
艺考的文化课分数低,是不是专业课很难过?
芜湖福伟机械设备销售有限公司在哪里啊,我有
拟人句大全 美中不足意思
彭氏商业大厦我想知道这个在什么地方
闵行区民政局结婚登记,婚检是自愿的吗?
股市中说的用时间去换空间是什么意思
沙巴格音阿日地址有知道的么?有点事想过去
可以拿苹果笔记本电脑在熊猫tv直播 么?
oppoa33换个外屏多少钱?
位于杭州的大学有哪些
推荐资讯
《王子复仇记》跟《哈姆雷特》一样吗
上海浦东桃林路18号环球广场最近的地铁站
热缩带重量怎样计算
中等职业学校教师资格证能评中二职称吗?
本金100000元利率1.5,8个半月是多少
十一分20除以2
胡君卤菜在什么地方啊,我要过去处理事情
淡奶油打发过头是不是比较容易出水
南京有什么好的自然风景
小温馨化妆品地址好找么,我有些事要过去
为什么我感觉我变了我第一个男朋友谈的时候什
一首很好听的歌,女声唱的,记得高潮部分的歌
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?