当前位置:   article > 正文

黑暗之光学习总结_offsetposition.normalized

offsetposition.normalized

黑暗之光

 

1. 处理相机的跟随和鼠标跟随的代码逻辑

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class FollowPlayer : MonoBehaviour {

    private Transform player;

    private Vector3 offsetPosition;

    public float distance = 0;   //计算偏移的距离

    public float scrollSpeed = 1.0f;

void Start () {

        player = GameObject.FindGameObjectWithTag("Player").transform;   //利用标签查找的组件的方法

        offsetPosition = transform.position - player.position;

        transform.LookAt(player.position);   //朝向主角的方法

}

void Update () {

        transform.position = offsetPosition + player.position;

        ScrollView();

}

  void ScrollView()   //处理视野的拉近和拉远效果

    {

       // print(Input.GetAxis("Mouse ScrollWheel"));//向后 返回负值(拉近视野)向前滑动 返回正值 (拉远视野)

        distance = offsetPosition.magnitude;  //magnitude 计算偏移的距离

        distance += Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;

        distance = Mathf.Clamp(distance, 2, 18);  //Clamp限制某个变量的范围

        offsetPosition = offsetPosition.normalized * distance;    //normalized 当前向量

     

    }

}

2. 处理点击任务面板出现和按钮功能的实现

(点击NPC出现任务面板,实现面板按钮的逻辑代码)

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

 

  public class BarNPC : MonoBehaviour {

 

    public TweenPosition questTween;

    public bool isInTask = false;  //表示是否在任务中

    public int killCount = 0;  //表示任务进度,已经杀死几只野狼

    public UILabel desLabel;

    public GameObject acceptBtnGo;

    public GameObject okBtnGo;

    public GameObject cancelBtnGo;

    void OnMouseOver()  //当鼠标位于这个collider之上,会在每一帧调用这个方法

    {

 

        if (Input.GetMouseButtonDown(0))   //当点击了老爷爷

        {

            if (isInTask)

            {

                ShowTaskProgress();

            }

            else

            {

                ShowTaskDes();

            }

            ShowQuest();

        }

    }

    void ShowQuest()

    {

        questTween.gameObject.SetActive(true);

        questTween.PlayForward();

    }

 

    void HideQuest()

    {

        questTween.PlayReverse();

        questTween.gameObject.SetActive(false);

 

    }

    

    public void OnCloseBUtton()

    {

        HideQuest();

    }

    public void ShowTaskDes()

    {

        desLabel.text = "任务:\n 杀死了10只狼\n\n奖励:\n1000金币";

        okBtnGo.SetActive(false);

        acceptBtnGo.SetActive(true);

        cancelBtnGo.SetActive(true);

    }

 

    public void  ShowTaskProgress()

    {

        desLabel.text = "任务\n 你已经杀死了" + killCount + "\\n 10只狼\n\n奖励:\n1000金币";

        okBtnGo.SetActive(true);

        acceptBtnGo.SetActive(false);

        cancelBtnGo.SetActive(false);

    }

    //任务系统  任务对话框上的按钮点击时间的处理

    public void OnAcceptButtonClick()

    {

        ShowTaskProgress();

        isInTask = true;//表示在任务中

    }

    public void OnOkButton()

    {

        if (killCount >= 10)

        {  //完成任务

 

        }

        else

        {//没有完成任务

 

        }

        

    }

    public void OnCancelButton()

    {

        HideQuest();

    }

 

 

}

 



3.鼠标管理事件,点击不同的物体显示的鼠标图标是不一样的


先声明点击不同物体的方法,设置成单例


另一个脚本调用


继承


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/89380
推荐阅读
相关标签
  

闽ICP备14008679号