unity跑酷游戏(源码)

包括:触发机关,

优化

fog的调试

效果

碰到障碍物游戏时间暂停(挂载到障碍物上)

上面需要有碰撞体

游戏物体上需要有标签

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Barrier : MonoBehaviour
{
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag=="Player")
        {            
            Debug.Log("碰到障碍物"+ gameObject.name);
            //游戏时间流动变为0
            Time.timeScale = 0;
        }      
    }
}

结束游戏后跳出游戏结束界面

然后场景跳转

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class EndGamePoint : MonoBehaviour
{
    [SerializeField] private GameObject canvas;
    private void OnTriggerEnter(Collider other)
    {
        if(other.tag == "Player")
        {
            canvas.SetActive(true);
            SceneManager.LoadScene("Suntail Village");
        }
    }
}

升降机关

需要触发器,挂载到触发器上

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.SocialPlatforms;

public class LiftingMechanism : MonoBehaviour
{
   [SerializeField] private GameObject door;  // 要移动的对象
    private float moveDistance = 2.0f; // 门上升的距离
    private float moveSpeed = 10.0f; // 门移动的速度

    private Vector3 initialPosition;//对象的初始位置
    private bool isMoving = false;

    void Start()
    {
        if (door != null)
        {
            initialPosition = door.transform.position;
        }
        if(door==null)
        {
            Debug.LogError("没拖入升降门"); 
        }
    }

    void Update()
    {
        if (isMoving)
        {
            Vector3 targetPosition = initialPosition + new Vector3(0, moveDistance, 0);
            door.transform.position = Vector3.MoveTowards(door.transform.position, targetPosition, moveSpeed * Time.deltaTime);

            if (door.transform.position == targetPosition)
            {
                isMoving = false; // 停止移动
            }
        }
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            isMoving = true;
        }
    }
}

挂载到玩家上

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerBallRunControl : MonoBehaviour
{
    [SerializeField]private float speed =10f;
    [SerializeField] private float turnSpeed = 4f;

    void Update()
    {
        //按下R重新开始游戏
        if(Input.GetKeyDown(KeyCode.R))
        {
            //重新加载场景
            SceneManager.LoadScene(0);
            //不要重新加载音乐
            Time.timeScale = 1;
            return;
        }
        float z = Input.GetAxis("Horizontal");
        transform.Translate(speed * Time.deltaTime, 0,-z*turnSpeed*Time.deltaTime);
        //玩家落下到地面下20点的位置结束游戏
        if(transform.position.y<-20)
        {
            Time.timeScale = 0;
        }

        //屏幕动态旋转效果
        //获取主摄像机的变换组件
        var c=Camera.main.transform;
        //获得摄像机当前的旋转角度
        Quaternion cur = c.rotation;
        //将当前的旋转角度加上跟输入有关的角度(沿y轴旋转)
        Quaternion target=cur*Quaternion.Euler(0, z * 0.05f,0);
        //球形插值
        Camera.main.transform.rotation = Quaternion.Slerp(cur, target, 1.5f);

    }
}
相关推荐
黄思搏20 小时前
基于标注平台数据的 Unity UI 自动化构建工作流设计与工程实践
ui·unity·蓝湖·vectoui
AI_零食1 天前
Flutter 框架跨平台鸿蒙开发 - 社交断舍离应用
运维·服务器·学习·flutter·游戏·开源·harmonyos
雷焰财经1 天前
首都在线MaaS平台:打造企业级AI中枢,驱动游戏产业智变
大数据·人工智能·游戏
wanhengidc1 天前
云手机 热血传奇游戏挂机
服务器·网络·安全·游戏·智能手机
羊羊20351 天前
开发手札:Unity6000与Android交互
android·unity·android-studio
黑客说1 天前
AI 游戏:从固定剧本到无限宇宙
人工智能·游戏
nhc0881 天前
贵阳纳海川·花卉游戏行业解决方案
人工智能·游戏·微信小程序·软件开发·小程序开发
上海云盾安全满满1 天前
游戏业务使用什么防护最安全
安全·游戏
Zarek枫煜2 天前
C3 编程语言 - 现代 C 的进化之选
c语言·开发语言·青少年编程·rust·游戏引擎
Sator12 天前
Unity AStarPath的踩坑点
unity