首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何使这个对象相对于玩家的位置?

我如何使这个对象相对于玩家的位置?
EN

Stack Overflow用户
提问于 2015-04-25 23:59:45
回答 2查看 268关注 0票数 0

在我的游戏中,玩家可以悬浮物体,并用鼠标在世界xy上移动它们。当玩家移动时,我如何使悬浮物体与玩家一起移动?

代码语言:javascript
复制
private void levitateObject() {
//Debug.Log("Levitating");

float yAxis = Input.GetAxis("Mouse Y");
float xAxis = Input.GetAxis("Mouse X");

Vector3 frontForce = playerCamera.transform.TransformDirection(Vector3.forward) * (yAxis * 1.5f) ;
Vector3 rightForce = playerCamera.transform.TransformDirection(Vector3.right) * (xAxis * 1.5f);

Vector3 currPos = levitatingObject.transform.position;
Vector3 nextPos = new Vector3 ( levitatingObject.transform.position, elevation,  levitatingObject.transform.position) + rightForce + frontForce;

levitatingObject.GetComponent < Rigidbody > ().velocity = (nextPos - currPos) * 10;
}

我想做一些类似下面的事情,但是我的对象根本不动。

代码语言:javascript
复制
Vector3 nextPos = new Vector3 ( transform.position.x + (levitatingObject.transform.position.x -transform.position.x) , elevation, transform.position.z + (levitatingObject.transform.position.z -transform.position.z));
EN

回答 2

Stack Overflow用户

发布于 2015-04-26 00:08:47

使玩家成为对象的父对象。

代码语言:javascript
复制
obj.transform.parent = player.gameObject;

那么对象的位置将总是相对于玩家的位置。当玩家移动时,物体也会移动。

票数 1
EN

Stack Overflow用户

发布于 2020-04-09 23:02:40

您可以将其设置为父对象,但这样做可能会出现一些问题,因此,如果您希望这样做:

当您开始拾取它时,运行此命令并将偏移量存储在对象上

代码语言:javascript
复制
public Vector 3 Offset = PickUpObject.transform.position - playerObject.transform.position;

然后在update方法中运行以下命令

代码语言:javascript
复制
transform.position = player.position + offset;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29867479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档