是一个比较简单的实现办法.
方向已经写死了,有需要的自己改吧.
思路:在开始游戏时获取和玩家的位置差距的向量,然后再Update中更改位置到指定距离,然后使用RotateRound进行旋转.最后再获取差距向量,形成一个循环.
这其中的顺序是很重要的.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Saber : MonoBehaviour {
public GameObject Target;
public float distance;
Vector3 dir;
// Use this for initialization
void Start() {
Target = GameObject.FindGameObjectWithTag("Player");
dir = transform.position - Target.transform.position;
}
// Update is called once per frame
void Update() {
transform.position = Target.transform.position + dir.normalized * distance;
transform.RotateAround(Target.transform.position, Vector3.up, 90 * Time.deltaTime);
dir = transform.position - Target.transform.position;
}
}