奥德赛npc上船(奥德赛游戏PC版)

手游攻略 2023-06-20 16
奥德赛NPC上船 在游戏开发中,NPC上船是一个非常重要的环节,涉及到船的移动、NPC的位置等多个方面。本文将介绍如何实现奥德赛中NPC上船的功能。 1. 船的移动 在奥德赛中,船的移动是由玩家控制的,因此需要在玩家控制船移动的同时,将NPC也随之移动。这可以通过在船上添加一个空物体,并将NPC作为其子物体,然后在船移动时,通过代码将NPC的位置与该空...

奥德赛NPC上船

在游戏开发中,NPC上船是一个非常重要的环节,涉及到船的移动、NPC的位置等多个方面。本文将介绍如何实现奥德赛中NPC上船的功能。

1. 船的移动

在奥德赛中,船的移动是由玩家控制的,因此需要在玩家控制船移动的同时,将NPC也随之移动。这可以通过在船上添加一个空物体,并将NPC作为其子物体,然后在船移动时,通过代码将NPC的位置与该空物体保持一致。


public class ShipMovement : MonoBehaviour
{
    public float speed = 10f;
    public Tranorm emptyObj;
    public Tranorm npc;
    private void Update()
    {
        float x = Input.GetAxis(\Horizontal\        float z = Input.GetAxis(\Vertical\        // ship movement
        tranorm.position  = new Vector3(x, 0, z) * speed * Time.deltaTime;
        // npc movement
        npc.position = emptyObj.position;
    }
}

2. NPC上下船

在奥德赛中,NPC需要上下船,这可以通过将NPC的位置限制在船上实现。当玩家控制船停靠在码头时,可以让NPC下船,反之则可以让NPC上船。


public class ShipDocking : MonoBehaviour
{
    public Tranorm dockingPos;
    public Tranorm npc;
    private bool isDocked = false;
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (isDocked) // npc上船
            {
                npc.SetParent(tranorm);
                npc.position = Vector3.zero;
                isDocked = false;
            }
            else // npc下船
            {
                npc.SetParent(null);
                npc.position = dockingPos.position;
                isDocked = true;
            }
        }
    }
}

3. NPC对话交互

在奥德赛中,NPC需要和玩家进行对话交互,这可以通过在NPC身上添加一个对话框并在玩家与NPC距离一定范围内时,让对话框出现实现。


public class NPCInteraction : MonoBehaviour
{
    public float interactDistance = 5f;
    public GameObject dialogBox;
    public Tranorm player;
    private void Update()
    {
        float distance = Vector3.Distance(tranorm.position, player.position);
        if (distance 
文章目录