想问一个关于unity中物体先后次序运动的问题
unity吧
全部回复
仅看楼主
level 1
有两个物体,一个物体运动完之后,另一个物体才开始运动。需要怎么来写代码呀?不太容易找到这样的例子呢。求大神帮忙哇!谢谢啦!
附上其中一个物体运动的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class point09f : MonoBehaviour {
public GameObject target;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
MoveToTarget(target.transform.position);
}
void MoveToTarget(Vector3 targetPos)
{
if (Vector3.Distance(transform.position, targetPos) > 0.01)
{
Vector3 direction = targetPos - transform.position;
direction = direction.normalized;
this.transform.Translate(direction * Time.deltaTime, Space.World);
}
}
}
2018年11月28日 06点11分 1
level 1
yield return new waitforseconds
2018年11月28日 07点11分 2
不明白啊,能给出具体实例嘛?比如说两个盒子,都朝向某一点运动。第一个盒子先运动完毕后,第二个盒子再开始运动。大致是这样的功能要求。
2018年11月28日 08点11分
level 9
[乖]楼上的意思是把后移动的代码写在协程里面,在第一物体移动完成之前一直wait
2018年11月29日 00点11分 3
你好,阔以加qq详细请教嘛? 754030536 谢谢啦[乖]
2018年11月29日 06点11分
是否可以给我写一个实例呀,我想了一下午,还是写不出来。。。
2018年11月29日 08点11分
@incrediblejack 示例见6楼
2018年11月29日 09点11分
level 10
设定个bool变量、第一个运动达到目标后把bool变成true、第二个物体识别到true后开始运动
2018年11月29日 00点11分 4
你好,阔以加qq方便详细详细向你请教嘛?754030536 谢谢啦!
2018年11月29日 07点11分
是否可以给我写一个实例呀,我想了一下午,还是写不出来。。。[泪]
2018年11月29日 08点11分
level 13
将你代码if (Vector3.Distance(transform.position, targetPos) > 0.01)改成if (Vector3.Distance(transform.position, targetPos) < 0.01)即可
2018年11月29日 06点11分 5
不对的吧。。。>0.01的意思是,如果物体和目标之间的距离大于0.01,则继续移动,直到不比0.01大了,就暂停移动。这和两个物体的移动次序无关啊
2018年11月29日 07点11分
@incrediblejack 这个是第一个物体的移动判定是吧,我的意思是你就用这个条件进行第二个物体的移动的条件,当(Vector3.Distance(transform.position, targetPos) < 0.01)时,第二个物体开始移动
2018年11月29日 08点11分
@红色尼禄 可是第二个物体的运动的代码,也是和第一个物体一样的呀,那你加上这句之后,它不就自动判断为第二个物体的条件了么?如何让它在第二个脚本中判断第一个物体的条件呀?
2018年11月29日 08点11分
@incrediblejack 你写在一个脚本里就好了
2018年11月29日 10点11分
level 9
[阴险]你要的示例代码,我也没测试过,只是为了演示协程而写的协程,其实我觉得不用做的这么麻烦
2018年11月29日 09点11分 6
谢谢谢!可是,这是一个script,我现在又三个物体,怎么样来控制三个呀?我想让每个物体都有一个script单独控制。
2018年11月29日 11点11分
[阴险]你是萌新吧?
2018年11月29日 11点11分
@艾威丶彼贝克 是额。。。一个学了好几遍c、c++、python基础的‘新人’,可是实在是不会编程。。。觉得编程好难。。。[泪]
2018年11月29日 12点11分
@incrediblejack 多写代码,多看别人代码,
2018年11月29日 12点11分
level 1
首先说明一下啊,我是楼主,我来准确地反应一下我的困惑。。。
比如上图是实际需要控制的三个立方体,我需要让最左边的先移动向direction(就是那个坐标位置),左边的移动完毕后,再让中间的移动到direction,中间的移动完毕后,再让右边的移动到direction。
上图是我根据上面的几个意见中的一个改的左边的移动script move1
上图是我正在改中间的移动move2,可是我不会从move1中调取。。怎么也改不好。。。
上图是我原来写的move3 原本 move1 move2 move3都是一样的,只不过class名字不一样而已。
请问各位大神,在这个基础上,应该怎么改呀?尽量别把script写在一个上面,我实在是不知道怎么在一个script上控制三个物体运动。因为后续我要做的项目,要有上百个零件的。。。
2018年11月29日 12点11分 7
level 1
一个移动类,一个开始移动的方法,传入目标点和回调方法,判读当到达目标点后执行回调。
在回调中处理移动到目标后逻辑(可以把需要移动的对象放在一个列表中,当收到回调时先去掉上一个,然后判断是不是还有要移动的对象,如果取第一个对象,继续之前的逻辑,知道列表的对象都处理了后结束流程)
2018年11月30日 08点11分 8
level 3
用协程或者写个布尔开关控制一下
2018年12月15日 06点12分 9
1