【问题标题】:Grappling Hook not grappling player in Unity [closed]Grappling Hook 在 Unity 中无法抓住玩家 [关闭]
【发布时间】:2019-03-09 16:46:05
【问题描述】:

我正在尝试在 Unity 中用 C# 编写一个抓钩。 这个想法是把一个球类游戏对象扔到一个带有“Hookable”标签的游戏​​对象上,并将玩家带到球被抓住的地方。 球可以投掷并成功识别碰撞,但不会将球员带走。 代码似乎是正确的,控制台没有给出任何警告,但是,我不明白发生了什么不工作。 这是代码,如果这听起来很无聊,请见谅:

抓钩(附在玩家游戏对象上):

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

public class GrapplingHook : MonoBehaviour
{
    public GameObject hook;
    public GameObject hookHolder;

    public float hookTravelSpeed;
    public float playerTravelSpeed;

    public static  bool fired;
    public bool hooked;

    public float maxDistance;
    private float currentDistance;

    void Update()
    {
    //firing the hook
        if(/*Input.GetMouseButtonDown(0)*/Input.GetKeyDown(KeyCode.H) && fired == false)
            fired = true;

        if (fired == true && hooked == false)
        {
            hook.transform.Translate(Vector3.forward * Time.deltaTime * hookTravelSpeed);
            currentDistance = Vector3.Distance(transform.position, hook.transform.position);

            if(currentDistance >= maxDistance)
                ReturnHook();
        }

        if(hooked == true)
        {
            transform.position = Vector3.MoveTowards(transform.position,
            hook.transform.position, Time.deltaTime * playerTravelSpeed);
            float distanceToHook = Vector3.Distance(transform.position, hook.transform.position);

            if(distanceToHook < 1)
                ReturnHook();
        }
    }

    void ReturnHook()
    {
        hook.transform.position = hookHolder.transform.position;
        fired = false;
        hooked = false;
    }

}

这是检查是否检测到抓钩的代码(附加到 Hook 和 Hookable 对象):

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

public class HookDetector : MonoBehaviour
{
    public GameObject player;

   void OnTriggerEnter(Collider other)
   {
        if(other.tag == "Hookable")
        {
        player.GetComponent<GrapplingHook>().hooked = true;
        Debug.Log("Tocou");
        }
   }
}

【问题讨论】:

    标签: c# unity3d game-engine game-development


    【解决方案1】:

    问题解决了。 我把脚本附加到了错误的游戏对象上,解决办法是附加到玩家的游戏对象上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      相关资源
      最近更新 更多