我是编程新手,想知道如何创建类似于游戏中使用的交换系统,意味着链接:
https://www.youtube.com/watch?v=11PXll2K_rg&list=FLdeibbADKB476CmvWIyd21A&index=2
我想知道我的泵如何识别箭头的位置并开始向她的方向移动:
我以为我会开始这样做:
在运动中的对象中使用的代码:
public float speed;
public int direction;
void Start () {
direction = 1;
}
void Update () {
if (gameObject.transform.position == GameObject.Find("ArrowUp").transform.position){
direction = 1;
}
if (transform.position == GameObject.Find("ArrowDown").transform.position)){
direction = 2;
}
if(direction == 1){
transform.position += new Vector3(0,speed*Time.deltaTime,0);
}
if(direction == 2 ){
transform.position += new Vector3(0,-(speed*Time.deltaTime),0);
}
}}
类型:我有一个炸弹移动物体朝向包含箭头的物体移动,Vector3它们的位置X和Z是相同的,Y的位置不同。
箭头位置(0,10,0)
泵的初始位置(0,0,0)
void以此方向开始= 1,然后对象向上移动
然后当泵到达位置(0,10,0)时,我希望它能够识别出向下箭头中的相同位置然后想要泵送mudaçe方向= 2,然后向下移动。
注意,箭头以一定的时间间隔旋转90度。那么运动方向会有所不同。
问题:我是否想知道如何识别此泵在物体箭头的相同位置然后给出改变其运动的顺序;
答案 0 :(得分:0)
如果“箭头”朝向Y轴(绿色箭头),则可以使用transform.up
void Update () {
Vector3 ArrowUpPosition = GameObject.Find("ArrowUp").transform.position
Vector3 ArrowDownPosition = GameObject.Find("ArrowDown").transform.position
if (gameObject.transform.position == ArrowUpPosition ){
direction = 1;
}
if (transform.position == ArrowDownPosition )){
direction = 2;
}
if(direction == 1){
transform.position += ArrowUpPosition.transform.up * speed*Time.deltaTime;
}
if(direction == 2 ){
transform.position += ArrowDownPosition.transform.up * speed*Time.deltaTime;
}
否则,您可以使用transform.right或transform.forward(和-transform.forward,-transform.up,-transform.right)
在更新中避免GAMEOBJECT.FIND:在Start()
中获取引用避免GAMEOBJECT.FIND AT:如果可以的话,将游戏对象作为字段传递给脚本。
在更新时避免这些指示:如果游戏对象有触发碰撞器,那么它们是否在OnTriggerStay中。