gpt4 book ai didi

javascript - 拾取和移动物体

转载 作者:行者123 更新时间:2023-11-30 21:12:50 25 4
gpt4 key购买 nike

我尝试在 C# 中找到任何示例,以将对象拾取到玩家手的位置并四处移动。然后当按钮被释放时,对象被删除。我在统一论坛中找到了一个例子,但它在 javascript 中。 ,我如何在 C# 中实现它

这是我找到的代码,但是我需要在点击按钮时抓取它并且玩家需要在对象前面。

#pragma strict

var TheSystem : Transform;
var Distance : float;
var MaxDistance : float = 10;

function Update() {



var hit : RaycastHit;
if (Physics.Raycast (TheSystem.transform.position, TheSystem.transform.TransformDirection(Vector3.forward), hit))
{
if(hit.transform.gameObject.tag == "sword2"){


Distance = hit.distance;
if (Distance < MaxDistance){


if (Input.GetKeyDown(KeyCode.E)) {
// show
renderer.enabled = true;
Destroy (GameObject.FindWithTag("sword2"));
}

if (Input.GetKeyDown(KeyCode.Backspace)) {
// hide
renderer.enabled = false;
}

}
}
}
}

我试过这个 c# 示例,但它很拖沓。当我抓入主摄像头时,我需要找到在空物体上获取它的方法,我需要更改为抓入插入玩家位置的空物体

using UnityEngine;
using System.Collections;

public class drag : MonoBehaviour {
float distance = 10;
void OnMouseDrag(){
Vector3 mousePosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, distance);
Vector3 objPosition = Camera.main.ScreenToWorldPoint (mousePosition);
transform.position = objPosition;
}
}

最佳答案

为了实现您的想法,有必要结合很多东西。

  1. 用于检测玩家何时靠近对象的触发器
  2. 读取玩家的输入以检查他/她是否按下或释放抓取物体的按钮
  3. 将游戏对象的位置更改为在性格
  4. 让抓取的游戏对象成为手的子对象。所以两者一起移动

此脚本解决了上述所有步骤。您需要注意添加刚体和对撞机。您还需要将要收集的对象标记为“项目”

额外注意:如果您将收集的项目设置为另一个具有网格的游戏对象的子项,例如手,子项将改变其形状。因此,改为使用放置在手位置的空游戏对象。并将检查器中的空游戏对象作为此脚本的参数传递。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class moveObject : MonoBehaviour {

public GameObject handEmptyGameObject;
GameObject item = null;

bool objectOnRange = false;

// Use this for initialization
void Start () {
//This is useful if you have just one item to collect in your scene
//if you have more than one, better remove it
item = GameObject.FindGameObjectsWithTag("item");
}

// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.G) && objectOnRange)
{
print("Grabbing an object");
item.transform.position = hand.transform.position;

item.transform.SetParent(hand.transform,true);
}
}

//You need to tag the GameObjec tto grab as "item" and set a
//collider and rigid bodies in the GameObjects
//This is to estimate if the player is close enough to the Object

void OnTriggerEnter(Collider other)
{
if(other.tag == "item")
{
objectOnRange = true;
item = other.gameObject;
}
}

void OnTriggerExit(Collider other)
{
if(other.tag == "item")
{
objectOnRange = false;
item = other.gameObject;
}
}

}

关于javascript - 拾取和移动物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45963974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com