我有一個浮動gameobject(brickRot),它通過raycast查看它下面的對象,然後根據brickRot的旋轉更改該對象的y位置(floorY)。不過,我無法將旋轉轉換爲用於更改Y位置的有用度量標準。我希望brickRot的當前旋轉等於floorY的y位置,然後只是相對於brickRot的旋轉(如果這是有道理的)。通過Unity中另一個對象的旋轉來影響對象的位置
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FloorRotation : MonoBehaviour {
private float brickRot;
private float floorY;
void Update() {
brickRot = transform.rotation.y;
RaycastHit hit;
Ray floorRay = new Ray(transform.position, Vector3.down);
if(Physics.Raycast(floorRay, out hit)) {
if(hit.collider.tag == "floor") {
floorY = hit.transform.position.y;
floorY = floorY + brickRot;
Debug.Log(floorY);
}
}
}
}
brickRot看作你把放在桌上一盤,當你旋轉板,您更改表的y位置(如果這個比喻使得任何容易混淆)。我使用raycast的原因是因爲磚可以找到多個「表」,並且需要區分它們。如果任何人有一個想法如何使這更容易,我會永遠感謝!
是否有理由使用物理(摩擦)不足以實現這一目標?或者甚至可能是固定聯合體?您的需求以什麼方式強制使用腳本而不是物理解決方案? – Serlite
我的理解是,你想模擬「瓶蓋擰緊」類型的行爲。讓我知道,如果這是你想實現的東西? –
@UirirM是的,這聽起來是正確的 - 旋轉也需要有一個最大和最大量它可以擴大floorY的位置,所以也許這種比喻會更有用 – Zelthon