如何获得对象位置并将位置转换为它

时间:2017-02-22 19:36:06

标签: c# unity3d

如何本地化其他GameObject位置 移动到它(就像传送到那个对象)我该怎么办?

<meta name="viewport" content="width=device-width, initial-scale=1">

它的目标是我想要获得它的位置并移动到它(传送) 我在游戏黑客上工作

1 个答案:

答案 0 :(得分:1)

如果您已经引用了目标对象,则可以在想要传送的对象中的任何位置使用this.position = BotController.Player.position

public class EasyTeleporter : MonoBehavior 
{
...
    public void SomeFunction() 
    {
        position = BotController.Player.position
    }
}

如果您正在创建第一人称游戏,并希望实现远程传输到任何对象之类的东西,那么您应该使用光线投射。

例如,您可以使用Unity默认资产FirstPersonCharacter(在资产商店中可用,或者您可以在启动新项目时添加它)并将以下脚本添加到FirstPersonCharacter游戏对象(这是FPSController预制件的子代):

using UnityEngine;
using System.Collections;

public class PlayerTeleporter : MonoBehaviour
{

    bool shooting = false;

    void Update()
    {

        if (Input.GetButtonDown("Fire1"))
        {
            shooting = true;
        }

    }

    void FixedUpdate()
    {
        if (shooting)
        {
            shooting = false;

            RaycastHit hit;
// you are casting a ray in front of your camera wich hits the first collider in its path
            if (Physics.Raycast(transform.position, transform.forward, out hit, 100f))
            {
// normally you shouldn't teleport directly into the trget object
                transform.position = hit.transform.position;
            }
        }
    }
}

一般来说,你应该澄清你的问题。你正在创造什么游戏,传送的目标和对象是什么,你想如何触发它。