Unity3d 相对于箭头的方向改变
我是编程新手,想知道如何创建一个类似于游戏中使用的交换系统,意思是链接: 我想知道我的泵是如何识别箭头的位置并开始向她的方向移动的: 我想我应该开始这样做: 运动对象中使用的代码:Unity3d 相对于箭头的方向改变,unity3d,unityscript,Unity3d,Unityscript,我是编程新手,想知道如何创建一个类似于游戏中使用的交换系统,意思是链接: 我想知道我的泵是如何识别箭头的位置并开始向她的方向移动的: 我想我应该开始这样做: 运动对象中使用的代码: public float speed; public int direction; void Start () { direction = 1; } void Update () { if (gameObject.transform.position == GameObject.Find("
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);
}
}}
类型:我有一个炸弹目标朝着包含箭头的目标移动,矢量3,它们的位置X和Z是相同的,位置Y是不同的
箭头处于位置(0,10,0)
泵的初始位置(0,0,0)
空心从该方向=1开始,然后对象向上移动
然后,当泵到达位置(0,10,0)时,我希望它能识别出向下箭头中的相同位置,然后泵送mudaçe方向=2,然后向下移动
请注意,箭头以时间间隔旋转90度。那么运动的方向就不同了
问题:我想知道如何识别这个泵在同一位置的物体箭头,然后给出改变其运动的命令 如果“箭头”指向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:在开始()中获取引用
避免游戏对象。查找:如果可以,将游戏对象作为字段传递给脚本
避免在更新中使用此指令:如果游戏对象具有触发碰撞器,则在OnTiggerStay中使用此指令。但是,感谢您,我的对象泵无法在“箭头”的相同位置识别此指令。我唯一想做的是,当我使用时,识别出这个泵与对象“arrow”处于相同的位置:if(transform.position.y>=GameObject.Find(“ArrowDown”).transform.position.y)){direction=2;}:泵识别,,,,use==但是当她不知道时,好的。可能是精度问题表示2个向量3完全匹配。您可以使用:
if((vector1-vector2).sqrMagnitude