Unity 角色移动贴墙行走
直接贴上代码,旋转角色角度检测碰撞
Vector2 v2Normal = new Vector2(normal.x, normal.y);
float fAngle = Vector2.SignedAngle(v2Normal, Vector2.up);
gameObject.transform.localRotation = Quaternion.Euler(, fAngle,); Vector3 startPos = new Vector3(transform.position.x, transform.position.y+, transform.position.z);
Vector3 v3Dir =transform.TransformDirection(Vector3.forward);
Vector3 endPos = startPos + v3Dir * Time.deltaTime * mMoveSpeed; // 检测是否碰到模型
RaycastHit hitInfo;
if (Physics.Linecast(startPos, endPos, out hitInfo, << LayerMask.NameToLayer("Wall")))
{
// 贴着模型行走
for (int i = ; i < ; i++)
{
fAngle += 5.0f;
gameObject.transform.localRotation = Quaternion.Euler(, fAngle, );
v3Dir = transform.TransformDirection(Vector3.forward);
endPos = startPos + v3Dir * Time.deltaTime * mMoveSpeed;
if (!Physics.Linecast(startPos, endPos, out hitInfo, << LayerMask.NameToLayer("Wall")))
{
gameObject.transform.Translate(Vector3.forward * Time.deltaTime * mMoveSpeed);
break;
}
}
}
else
{
gameObject.transform.Translate(Vector3.forward * Time.deltaTime * mMoveSpeed);
}
Unity 角色移动贴墙行走的更多相关文章
- unity 角色换装
unity角色换装的关键是更改角色部位上的物体的SkinnedMeshRenderer组件的属性: 更改mesh:mesh决定了部位的物体的外形,是主要的数据. 刷新骨骼:同一个部位下,不同的mesh ...
- Unity 角色复活和重新开始游戏
作者写游戏完成的时候,还需要从新想下如何把游戏设置重新开始,角色如何复活. 一般大多数都会采用这种方式来代替游戏重新开始 Application.LoadLevel("xxx场景" ...
- Unity 角色场景传送功能
传送触发器 using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine. ...
- Unity角色对话
对话类------------------------------------------------------------------------------------------------- ...
- unity 角色旋转
using UnityEngine; using System.Collections; public class Triangle : MonoBehaviour { public float sp ...
- Unity角色残影特效
残影特效在网上有很多例子,比如这个,我参考着自己整合了一下,算是整合了一个比较完整且特别简单易用的出来,只需要一个脚本挂上去无需任何设定就能用. 这里只针对SkinnedMeshRenderer的网格 ...
- 【Unity】11.1 角色控制器 (Character Controller)
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 角色控制器(Character Controller)主要用于对第三人称或第一人称游戏主角的控制.如果要创建类人角色,可 ...
- 台北Unity开发者研讨会 笔记
本文转自:http://ndark.wordpress.com/2013/05/12/20130511-台北unity开发者研讨会-笔记/ (墙外) 说明 本文单纯只是笔记,若有笔误敬请见谅. 相关参 ...
- 【Unity探究】物理碰撞实验
这几天为了准备面试,所以决定对平时学习中的盲点扫盲一下,首先想到的就是物理碰撞.以前没有好好研究过,一直模糊不清,到底什么条件下才可以产生物理碰撞呢?只要其中一个有Rigidbody就可以了吗?所以进 ...
随机推荐
- php sleep函数延迟执行
PHP sleep函数一般用于定时执行任务中,表示延迟多少秒在执行程序.这里主机吧主要给大家讲一下sleep函数的语法和应用实例. sleep函数语法: sleep(seconds); //secon ...
- sublimetext 创建一个php命令行编译环境
菜单栏=>工具->编译系统=>新编译系统(插入如下代码,前提是有php批处理 然后编译php ctrl+b即可) { "cmd": ["php" ...
- Solr中的group与facet的区别
Solr中的group与facet的区别 如果是简单的使用的话,那么Facet与group都可以用来进行数据的聚合查询,但是他们还是有很大的区别的. 首先上facet跟group的操作: Facet的 ...
- 整理Xen理论知识
XEN 简介 XEN 是一个基于X86架构.发展最快.性能最稳定.占用资源最少的开源虚拟化技术.Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SU ...
- java 继承内存分配
今天,复习的是继承的内存分配.我们知道,Java中内存可以初略分为堆.栈.方法区. package sort; class Person{ public int age; public String ...
- mysql组复制安装
参考文档 https://blog.csdn.net/li123128/article/details/80744568 https://www.cnblogs.com/ctulzq/p/863109 ...
- python标签值标准化到[0-(#class-1)]
python 处理标签常常需要将一组标签映射到一组数字,数字还要求连续. 比如 ['a', 'b', 'c', 'a', 'a', 'b', 'c'] ==(a->0, b->1, c-& ...
- LeetCode 141. Linked List Cycle 判断链表是否有环 C++/Java
Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked lis ...
- Linux 系统状态检测命令
介绍快速查看Linux系统运行状态的能力(网络网卡.系统内核.系统负载.内存使用情况.启用终端数量.历史登录记录.命令执行记录.救援诊断)等命令使用方法 1.ifconfig 用于获取网卡配置和网络 ...
- [UNITY 5.4 UGUI] 控件重叠触摸穿透
问题. imge 和 button重叠时,imge 覆盖在button上面,导致点击事件无法传递到button. 1.给imge 添加 [Canvas Group]组件 2.修改[Canvas Gro ...