我正在制作一个跟随我的鼠标位置的角色。
我也有被实例化的敌人,并希望这个角色移向敌人的位置但比敌人高几英尺。
由于我的角色是飞行的敌人,我不确定如何使用朝向统一的方向。 当我的敌人被摧毁时,我也希望角色继续跟随光标。
public class FollowCursor : MonoBehaviour
{
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if(GameObject.FindWithTag("Enemy"))
{
transform.position = Vector3.MoveTowards.GameObject.FindWithTag("Enemy").transform.position;
}
else
{
transform.position = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x,Input.mousePosition.y,8.75f));
}
}
}
答案 0 :(得分:1)
我知道你希望移向一个飞行的敌人和/或让飞行的敌人向你的角色移动。
我也明白你希望使用MoveTowards方法来做到这一点。
您应该可以通过忽略Y位置或将其设置为固定值来执行此操作。
喜欢这个。
//Method used: Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
//Set movespeed/steps
float speed = 5f;
float step = speed * Time.deltaTime;
//Define y position
float yourFixedYValue = 8.75f;
//Find target
Vector3 enemyPosition = GameObject.FindWithTag("Enemy").transform.position;
Vector3 target = new Vector3(enemyPosition.x, yourFixedYValue, enemyPosition.z);
//Move from current position towards target with step increment.
transform.position = Vector3.MoveTowards(transform.position, target, step);
如果没有回答你的问题,请详细说明你的意思。
编辑:
要移向鼠标,您可以在Update方法中使用类似这样的Raycast。
if (Input.GetMouseButtonDown(0))
{ //If left mouse clicked
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //Fire ray towards where mouse is clicked, from camera.
if (Physics.Raycast(ray, out hit)) //If hit something
target = hit.point; //point is a vector3 //hit.point becomes your target
}
那"某事"可以是任何对手,也可以是敌人。所以可以用来移动一般并向敌人移动。