前几天无意中看到一篇面试题 其中有个问题就是做一个简单的塔吊
然后我就根据自己现有的知识 做了一个简单的塔吊效果 在建筑游戏中可以加入这个demo
之后先给大家看一下效果 我做的比较粗糙 一方面没有合适的素材 第二就是没有吧数值弄的很精确

我实现了简单的左右旋转 上下旋转 力臂的延展和收缩
其中我用到了之前在博客介绍到的规则物体的简单的单向缩放地址

然后其中比较难理解的地方应该就是物体的勾取 和绳子的实现 还有就是物理效果
这些我分别使用了射线 划线组件 铰链关节组件来实现
在代码中也使用了很多关于获取组件的语句 希望大家可以看懂

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DiaoJI : MonoBehaviour
{public Transform RotatePart;//可左右旋转的部分public Transform LengthPart;//改变长度的部分float scale;float speed = 0;bool islengthmove = true;public Transform UprotatePart;//上下旋转的部分public GameObject GouPart;//钩子public LineRenderer linerenderer;public GameObject TargetPosiObject;//以物体代替位置public GameObject Cameras;public void Start(){scale = LengthPart.localScale.z;linerenderer.enabled = false;}private void RightAndLeftRotate(){if (Input.GetKey(KeyCode.A)){RotatePart.Rotate(-Vector3.up * Time.deltaTime * 10f);}if (Input.GetKey(KeyCode.D)){RotatePart.Rotate(Vector3.up * Time.deltaTime * 10f);}}//旋转和上下高度的调整private void LengthUpdate(){if (Input.GetKey(KeyCode.W)){scale += 0.05f;speed = 2f;}else if (Input.GetKey(KeyCode.S)){scale -= 0.05f;speed = -2f;}else{speed = 0;}if (islengthmove){LengthPart.Translate(transform.forward * Time.deltaTime * speed);}LengthPart.localScale = new Vector3(LengthPart.localScale.x, LengthPart.localScale.y, scale);if (LengthPart.localScale.z >= 11.3f){islengthmove = false;LengthPart.localScale = new Vector3(LengthPart.localScale.x, LengthPart.localScale.y, 11.3f);}else if (LengthPart.localScale.z <= 1.7f){islengthmove = false;LengthPart.localScale = new Vector3(LengthPart.localScale.x, LengthPart.localScale.y, 1.7f);}else{islengthmove = true;}}//长度的延伸private void UpandDownRotate()//还没有做区域限制{if (Input.GetKey(KeyCode.Q)){UprotatePart.Rotate(-Vector3.right * Time.deltaTime*2);}if (Input.GetKey(KeyCode.E)){UprotatePart.Rotate(Vector3.right * Time.deltaTime * 2);}if (UprotatePart.localRotation.x > 1){Debug.LogError("过来");UprotatePart.localEulerAngles = new Vector3(5.58f,0,0);}if (UprotatePart.localRotation.x < -14.5f){UprotatePart.localEulerAngles = new Vector3(-14.5f, 0, 0);}}private void ConGou()//控制钩子的方法{linerenderer.SetPosition(0, GouPart.transform.position);linerenderer.SetPosition(1, TargetPosiObject.transform.position);if (Input.GetKeyDown(KeyCode.Space)){Ray ray = new Ray(GouPart.transform.position, Vector3.down);RaycastHit hit;if (Physics.Raycast(ray, out hit,1000)){if (hit.collider.tag == "Bg"){TargetPosiObject = hit.collider.gameObject;TargetPosiObject.transform.position = hit.point;HingeJoint hin= GouPart.AddComponent<HingeJoint>();hin.connectedBody = hit.collider.gameObject.GetComponent<Rigidbody>();linerenderer.enabled = true;}}}///放手吧if (Input.GetKey(KeyCode.X )){Destroy(GouPart.GetComponent<HingeJoint>());linerenderer.enabled = false;}}private void camerarotate() //摄像机围绕目标旋转操作{if (Input.GetKey(KeyCode.A)){Cameras.transform.RotateAround(transform.position, -Vector3.up, Time.deltaTime * 10f);}if (Input.GetKey(KeyCode.D)){Cameras.transform.RotateAround(transform.position, Vector3.up, Time.deltaTime * 10f);}}private void Update(){RightAndLeftRotate();//左右旋转力臂LengthUpdate();//力臂的长度的延伸UpandDownRotate();//力臂的上下的伸展ConGou();//钩子的控制方法camerarotate(); //摄像机围绕目标旋转操作}}

代码其实不是很难 希望我所写的对大家有帮助
如果有问题可以联系我 主页有我的联系方式

unity简单实现塔吊效果相关推荐

  1. Unity Shader 之 简单 护盾Shield 效果的实现

    Unity Shader 之 简单 护盾Shield 效果的实现 目录 Unity Shader 之 简单 护盾Shield 效果的实现 一.简单介绍 二.实现原理

  2. Unity中用shader graph制作一个简单的传送门效果

    Unity中用shader graph制作一个简单的传送门效果 一.配置渲染管线 1.通过菜单"Asset" --> "Create" --> &q ...

  3. Unity中的部分环境光照设置以及简单雾的效果

    Unity中的部分环境光照设置以及简单雾的效果 环境光照 为什么要使用环境光照 效果实现 灯光渲染窗口 第一部分 第二部分: 环境光照 雾 结尾 先发一张最近测试出的demo图片,这个项目是开启了UR ...

  4. unity简单技能系统

    unity简单技能系统 类类型概览 CharacterSkillManager      角色技能管理器 挂载在角色 持有SkillData与释放器 通过释放器进行技能释放 SkillDeployer ...

  5. unity 实现物体破碎效果的一些方法 - 细雨淅淅

    游戏越来越接近现实的感觉,如果有一个真是的 虚拟现实设备,可能我们真的会感觉是在真实世界.场景的逼真是在渲染效果.角色AI.游戏逻辑.物理效果等等一起导致的结果.现在游戏越来越大,除了渲染,物理估计是 ...

  6. Unity ShaderGraph图片发光效果

    Unity ShaderGraph图片发光效果 前言 发光效果(Glow) 原理 ShaderGraph 前言 发光的基本原理,如何给图片施加不同颜色的光 公式讲解部分参考10行代码搞定"热 ...

  7. 如何使用unity制作雷达探测目标效果动画

    如何使用unity制作雷达探测目标效果动画 如何用unity制作动画或者可以展示的软件 因为如今许多制作软件的引擎,虚幻,unity,寒霜等,unity更加便捷. 在官网www.unity3D.com ...

  8. Unity简单2D游戏开发

    Unity简单2D游戏开发 前言: 近日比较无聊,在b站找了一个up主,跟着他的教程来做游戏--开发一个简单的2D游戏 用 Tilemap 绘制场景 新建一个2D项目,在Unity Asset Sto ...

  9. unity简单复刻无敌破坏王

    使用unity简单复刻无敌破坏王总结 国庆突发奇想想简单复刻一下无敌破坏王,这里写一些总结,希望也能对大家有帮助 游戏截图: 基本思路: 时间有限,也只是简单复刻,所以只实现破坏方块的功能,画面算是广 ...

最新文章

  1. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
  2. python多态的概念_python中的多态
  3. 音视频开发进阶指南--音视频概念基础
  4. 关于TTL大家容易忽略的地方
  5. Hibernate Session和Jpa EntityManager
  6. Eclipse Scout架构商业应用开发的工具与环境
  7. 计算机科学工学,2016考研工学类专业介绍:计算机科学与技术
  8. c语言编程车速里程测量,电子车速里程表设计开题报告.doc
  9. 竞赛练一练 第15期:电子学会2021年9月青少年软件编程(图形化)等级考试试卷(三级)...
  10. SSIS之Foreach循环容器(文件枚举器)遍历文件(关键点 详细步骤 图文讲解)
  11. 苹果7更新系统后显示无服务器,苹果手机备份还原之后显示服务器問題
  12. 敏捷团队︱数字化领导力之敏捷团队建设
  13. 怎樣制作线段动画_教您怎样才能演示图形平移过程?
  14. 趣图:我说自己菜 vs 大佬说自己菜
  15. 攻防世界逆向入门题之流浪者
  16. 网贷风控体系之-决策引擎
  17. 51单片机DS18B20与中断冲突解决方式
  18. C# (CSharp) 简述
  19. k8s学习-CKS真题-secret创建、使用
  20. PLU Decomposition

热门文章

  1. 转 开启设计之门 设计基础教程之构图篇
  2. NetSuite报表之多栏账
  3. 骁龙 821、Exynos 8890、麒麟 960 三款处理器的对比
  4. 【图像处理】数字图像处理中常用图像分割算法(理论初识)
  5. element UI 表格序号倒序
  6. SQL 修改主键信息
  7. PHP 独立模型,DEDECMS 独立模型支持副栏目修改
  8. 百无聊赖之JavaEE从入门到放弃(十)抽象方法_抽象类 接口
  9. Genymotion模拟器下载及安装步骤详解
  10. springMVC例子