我使用的是統一性5.1.2,如果這有所作爲。將玩家對象圍繞玩家對象移動一個光滑的圓圈
我有一個遊戲對象的盾牌,我想圍繞一個球員圍繞一個圈子移動。我有一定程度的工作能力,盾牌對輸入有很好的響應,但不會動畫,因爲它只是傳送到新的位置,而不是在平滑的旋轉中繞着一圈移動。遊戲是2D自上而下,所以只能在x/y平面上工作。試圖使用lerp和slerp,但沒有得到任何喜悅
真的很感謝你的幫助,弄清楚這一個!
這是我到目前爲止有:
public class ShieldMovement : MonoBehaviour {
public Transform target; //player shield is attaced to
float distance = 0.8f; // distance from player so it doesn't clip
Vector3 direction = Vector3.up;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
float angle = Mathf.Atan2 (Input.GetAxisRaw("rightH"), Input.GetAxisRaw("rightV"))* Mathf.Rad2Deg;
if(Input.GetAxis("rightH") != 0f || Input.GetAxis("rightV") != 0f)
{
direction = new Vector3(Input.GetAxis("rightH"),Input.GetAxis("rightV"), 0.0f) ;
}
Ray ray = new Ray(target.position, direction);
transform.position = ray.GetPoint(distance);
if(Input.GetAxis("rightH") != 0f || Input.GetAxis("rightV") != 0f)
{
transform.rotation = Quaternion.AngleAxis(angle,Vector3.forward*-1);
}
}
}
你想讓'transform.position'平滑移動或'transform.rotation'嗎? –
可能爲你節省一點代碼的東西是在空變換下父屏蔽,然後在播放器下面居中和父變換空變換。這樣,你不需要弄清盾的旋轉/位置,只需要旋轉它的父母。 (只是提供替代您當前的方法。) – Serlite
@StevenMills transform.position。本質上,如果盾牌位於右下角,並且我將棍子直接移動到左上角,盾牌從左下角消失並立即出現在右上角,而不是平滑地繞着圓圈移動,直到到達新點。 –