【发布时间】:2017-05-17 19:25:45
【问题描述】:
我有一个浮动的游戏对象 (brickRot),它通过光线投射查看其下方的对象,然后根据 brickRot 的旋转更改该对象的 y 位置 (floorY)。但是,我无法将旋转转换为更改 Y 位置的有用指标。我希望brickRot 的当前旋转等于floorY 的y 位置,然后仅相对于brickRot 的旋转进行更改(如果这有意义的话)。
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 位置(如果这个类比让它更容易混淆的话)。我使用光线投射的原因是因为积木可以找到多个“表”,并且需要区分它们。如果有人知道如何使这更容易,我将永远感激不尽!
【问题讨论】:
-
是否有理由使用物理学(有摩擦)不足以实现这一目标?或者甚至是固定关节?您的要求以何种方式要求采用脚本解决方案而不是物理解决方案?
-
我从中了解到的是,您想模拟“拧瓶盖”的行为。让我知道这是否是您想要实现的目标?
-
@UmairM 是的,这听起来很正确 - 旋转还需要有一个最小和最大量,它可以缩放 floorY 的位置,所以这个类比可能会更有用
标签: c# unity3d gameobject