
Dark Souls
LhyangCN
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Split L/R Hands(左右手分离)
在子状态机中加对称的左手攻击;用bool(r0l1)判断左右手攻击(当判断为真的时候左手攻击,为假的时候右手攻击)原创 2019-02-25 09:10:49 · 201 阅读 · 0 评论 -
Relocate LocDot(重制lockdot)
利用半高点重新制作锁定点;比较好的情况是摄影机看角色的脚底 锁定点放在半高位置;锁定半高位置: public void Update() { if (lockTarget != null) { lockDot.rectTransform.position = Camera.main.WorldToScreenPoint(lockT...原创 2019-01-23 21:45:20 · 191 阅读 · 0 评论 -
Lockon Target Data Structure(lockontarget重置)
问题:1.锁定ui不能处在一个完美的位置(当被锁角色体积比较大的时候,要去计算他的中心点位置)2.当本身角色远离被锁定角色的时候,锁定ui的位置会发生改变。整理cameracontroller、里面的代码利用类以及构造函数重新声明lockontargetprivate LockTarget lockTarget;private class LockTarget { ...原创 2019-01-23 21:20:06 · 381 阅读 · 0 评论 -
Track Direction(追踪方向)
调整跳和翻滚:actorcontroller修改代码: private bool trackDirection = false;//追踪方向 //lockon状态判断 if (camcon.lockState == false) { if (pi.Dmag > 0.1f)//增加判断 如果按键时间大于0.1秒那么就不转回到前...原创 2019-01-23 20:40:56 · 279 阅读 · 0 评论 -
Add Defense State(新增防御状态)
增加举盾动作:新增一个Layer(defense)将权重托满再将lefthand托给mask拖一个举盾和idle动画》》增加一个bool判断条件(上钩的时候举盾,消勾放松)》》这时候OnAnimatorIK的修复代码会产生影响,需要增加判断条件。然后利用程式码套接到手柄控制:IUseInput: public bool defense;JoystickInput: public s...原创 2019-01-18 13:04:32 · 192 阅读 · 0 评论 -
Assign Jostick(配置手柄)
创建一个新的项目来进行调试:在main camera下面挂一个测试程式码 在update里面:void Update () { print(Input.GetAxis("Horizontal")); }当你摇动左蘑菇头的时候会console浮点数其他以此类推...原创 2019-01-12 19:02:01 · 343 阅读 · 0 评论 -
Add Shield(新增盾牌)
在手腕或者手肘下面新增空对象(weaponhandle)下面新建一个cube盾牌,再调的时候注意穿模问题;当你的盾牌加上去之后,会出现问题:当你在待机状态的时候盾牌是在防御状态的,这时候就需要让美术师调整模型,或者里用程式码微调模型;利用程式码调整动画:IK Pass(当你上勾的时候引擎才会帮你调用OnAnimatorIK() )在Base Layer上将IK Pass勾选 增加LeftArm...原创 2019-01-18 09:19:56 · 467 阅读 · 0 评论 -
Change Physice Materials(更换物理材质)
bug:在角色跳到斜坡边缘的时候会卡在斜坡边缘一直做滑翔动作。因为当你在空中的时候角色会因为这段代码一直给一个向前的速度,这样会使角色和斜坡面之间有一个摩擦力。所以要解决这个问题就要修改摩擦力修改预设材质:在根目录新建一个physic material(frictionOne)将动摩擦和静摩擦给为1Dynamic Friction:动摩擦Static Friction:最大静摩擦Boun...原创 2019-01-03 10:23:48 · 329 阅读 · 0 评论 -
Camera Jitter Fix(摄像头抖动修正)
优化用户体验:当人物移动的时候移动摄像机时候会一卡一卡的,摄影机不稳,问题来自于cameracontrollor,解决办法:利用代码使人物的颈椎固定在屏幕某一点, camera.transform.position = Vector3.SmoothDamp(camera.transform.position, transform.position, ref cameraDampVeloci...原创 2019-01-17 19:59:00 · 1548 阅读 · 0 评论 -
Mirror Animations(动画水平镜射)
将右手攻击转化成左手攻击:新增一个武器便于区分:找到righthand新增空物件weaponhandle将他拽到虎口位置增加一个cylinder。在attack1hA里面就有mirror上勾,然后里用程式码控制,上勾mirror的parameter(接受bool值),增加一个bool(mirror)。...原创 2019-01-05 22:24:14 · 718 阅读 · 0 评论 -
Add Flag to restrict Attacking Condition(用旗标限制攻击条件)
问题:角色跳到一半可以挥刀,翻滚到一半的时候也可以挥刀,所以要限制攻击条件增加程式码:private bool canAttack;//增加一个判断if (pi.jump) { anim.SetTrigger("jump"); canAttack = false;//跳跃时锁定攻击 } //添加...原创 2019-01-01 10:30:14 · 156 阅读 · 0 评论 -
Handle Root Motion by Script(利用程式码叠加root motion)
第三段攻击没有向前移动unity API:unity onanimatormove():会在整个状态机算完一次呼叫一次,有什么不满意可以在它里面修改。在ybot下面挂rootmotioncontrol:public class RootMotionControl : MonoBehaviour{ private Animator anim; void Awake() ...原创 2019-01-05 14:14:09 · 703 阅读 · 0 评论 -
Rest Attack Trigger using Animation Events(利用代码重设trigg)
实现第一段攻击马上完成的时候才能接受第二段攻击的指令没有那么容易触发二连击:首先在动画的适当位置增加一个event做reset trigger吐出来的string设为attack,然后再ybot上面挂一个程式码:public class TriigerControl : MonoBehaviour{ private Animator anim; void Awake() ...原创 2019-01-05 10:55:40 · 216 阅读 · 0 评论 -
Attack State Slight Movement(攻击状态)
问题:在攻击的时候角色可以移动(溜冰一样)利用和翻滚类似的程式码写出锁死地面,在利用曲线修改动作流畅度:public void OnAttackEnter() { pi.inputEnabled = false; // lockPlanar = false; anim.SetLayerWeight(anim.GetLayerIndex...原创 2018-12-31 10:39:10 · 431 阅读 · 0 评论 -
Add Attack C State(新增攻击状态)
新增第三段攻击:增加第三段攻击和增加第二段攻击一样 注意两段攻击的过渡。这样会有不当累计的问题出现。原创 2019-01-04 20:25:52 · 326 阅读 · 0 评论 -
Auto Release Lockon(自动解除锁定)
实现当角色远离被锁物体一定距离的时候锁定解除:判断距离:unityAPI:Vector.Distance();增加这个判断当这个值大于某个距离的时候就取消锁定: public void Update() { if (lockTarget != null) { lockDot.rectTransform.position = Cam...原创 2019-01-24 10:17:46 · 357 阅读 · 0 评论 -
Mouse Input#1(鼠标输入1)
在keyboardinput里面新增header(Mouse settings)新增鼠标控制选择(当勾选的时候,鼠标可以控制jup和jright);程式码中增加判断条件可以进行切换,增加控制鼠标灵敏度。代码: [Header("==== Mouse settings ====")] public bool mouseEnable = false; public floa...原创 2019-01-19 12:44:52 · 906 阅读 · 0 评论 -
Mouse Input#2(鼠标输入2)
1.隐藏白色鼠标箭头2.增加鼠标左右键攻击模式3.LT和LB组成防御功能1:鼠标锁死不显示:在cameracontroller里面增加隐藏鼠标程式码(Cursor函数) //隐藏鼠标 Cursor.lockState = CursorLockMode.Locked;2.增加鼠标左右键攻击模式:在keyboardplayerinput里面直接修改(鼠标...原创 2019-01-19 13:02:09 · 320 阅读 · 0 评论 -
Attack Sub State(攻击子状态)
在animator下增加子状态机(攻击状态)可以指明跳到子状态机的具体哪一个或者把决定权交给子状态机;利用标签进行查核目前是不是运行到带有这种标签的状态,利用代码查核:修改actorcontrller的攻击系统: /// <summary> /// Attack /// </summary> public void OnAttac...原创 2019-01-31 09:39:13 · 369 阅读 · 0 评论 -
Lockon Logic#2(lockon逻辑2)
利用forward和right值从代码中进行控制动画播放。在代码中灌进去forwardheright值;在灌之前要进行判断(没有lock的状态就和以前一样)当处于forward的时候要重新进行计算值 if (camcon.lockState == false) { //坐标系计算+动画补间旋转 float targetRunMu...原创 2019-01-23 11:36:25 · 247 阅读 · 0 评论 -
2D Freeform Blend Tree(2D混合树)
将以前的1D混合树修改为2D混合树为了更好的演示lockon状态的动画;第二个2d混合树可以将他想香味手柄摇杆上面的点就是每个动画然后通过播放慢慢调试。...原创 2019-01-23 10:56:50 · 860 阅读 · 0 评论 -
Lockon Logic#1(lockon 逻辑)
当处于lonckon状态的时候模型应该只能面向被锁定物体。所以要在actorcontroller里面增加判断,当处于锁定状态的时候模型只能面向被锁物体: //lockon状态判断 if (camcon.lockState == true) { if (pi.Dmag > 0.1f)//增加判断 如果按键时间大于0.1秒那么就不转回到...原创 2019-01-23 10:32:13 · 258 阅读 · 0 评论 -
Abstract Class Useer Input(抽象类别)
新建IUserInput:把一样的东西抽出来,将playerinput从Iuserinput继承过来,并将保护级进行修改joystick input类似操作修改后代码:IUserInput:using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class ...原创 2019-01-16 21:16:57 · 191 阅读 · 0 评论 -
Trial Design for Joystick Input(手柄类别测试2)
套接跑跳:run = Input.GetButton (btnA ); bool newJump = Input.GetButton(btnB); //jump = tempJump; if (newJump != lastjump && newJump == true) { jump = ...原创 2019-01-16 20:35:07 · 274 阅读 · 0 评论 -
UI Lock Dot(UI Lockon 圆圈)
画一个圆圈在被锁物体上:新建一个UI修改cameraconctoller,using UnityEngine.UI;//取得ui类别 public bool lockState;//查看是否锁死 lockState = false;//在引擎里面显示是否被锁死 if (cols.Length == 0)//长度为0那么就是没锁过东西 ...原创 2019-01-22 12:56:53 · 276 阅读 · 0 评论 -
Successive Lockon(连续lockon)
问题:锁第一个人之后,想锁第二个人必须先解锁第一个人,这样不符合玩法逻辑,应该是锁第二个人的时候直接可以锁上,直接切换。所以应该修改代码逻辑:void FixedUpdate () { if (lockTarget == null)//如果没有锁东西那个么相机可以随便移动 { Vector3 tempModelEuler = modle.tran...原创 2019-01-22 12:36:55 · 178 阅读 · 0 评论 -
Lockon Overlapping Test(Lockon目标截取)
找到锁死的目标:使用unity的Physics.OverlapBox;红色的就是角色向前延申碰到的就是要锁的东西;判断是否碰到就是用overlapbox来判断;还要新增一个兴趣层级Enemty: public void LockUnlock() { if (lockTarget == null) { //try to lo...原创 2019-01-22 10:18:34 · 176 阅读 · 0 评论 -
Get Lockon Input(取得Lockon输入)
lockon模式:用右蘑菇头;要在edit里面接进来新增button9(右蘑菇头按下);在iuserinput里面新增bool lockon;在joystickinput里面声明以及实例化;在cameracontroller里面写一个方法(lockunlock)来控制是否lock; public void LockUnlock() { print("lockunlpock...原创 2019-01-22 09:21:59 · 254 阅读 · 0 评论 -
Trial Design for Joystick Input Class#1(手柄类别测试1)
把键盘鼠标承接到手柄:首先按照键鼠controller定义查找名称 然后按照键鼠控制器逻辑写两个蘑菇头的控制代码:using System.Collections;using System.Collections.Generic;using UnityEngine;public class JoystickInput : MonoBehaviour { [Header("Jo...原创 2019-01-15 19:13:14 · 257 阅读 · 0 评论 -
Long Press(长按功能)
1.实现长按功能:当用户按下后0.1s内不会有变化,0.1s后变化然后和普通按同时还原。如下图(橘黄色IsDelaying区域为长按,红色为正常按击,紫色区域为判断双击区域)增加MyButton代码:using System.Collections;using System.Collections.Generic;using UnityEngine;public class MyBut...原创 2019-01-21 11:53:23 · 10278 阅读 · 5 评论 -
Timer Class(计时器类别)
1.实现double trigger2.long press长按紫色的部分(IsExteding)是要侦测用户是否按下第二次1.double trigger:新建MyTimer时间类:原创 2019-01-20 13:00:48 · 1066 阅读 · 0 评论 -
Button Class(按钮类别)
代码整理:1.提供IsPressing信号,让其他模块或后续模块得知目前用户硬件输入状态。2.OnPressed 信号,提供…目前是否刚刚按下此按钮。3.OnReleased信号,…目前是否刚刚释放此按钮。在Assets目录下新建类程式码(MyButton)1.不继承MonoBehavier;写入三种状态以及两种判断状态。using System.Collections;using S...原创 2019-01-20 09:31:22 · 10558 阅读 · 1 评论 -
Lerp Layer Weight(动画权重线性内插)
问题:动画还原僵硬,权重移动太剧烈。需要做一个缓动。通过代码控制权重: private float lerpTarget;//权重 public void OnAttackEnter() { pi.inputEnabled = false; // lockPlanar = false; lerpTarget = 1.0f; ...原创 2019-01-04 20:11:40 · 955 阅读 · 0 评论 -
Add Attack B State(新增攻击状态)
新增一个攻击:将第二段攻击拖入动画面板,给一个转态从attack1hA转到attack1hB(exit time不能消勾 因为要做完第一段攻击才能触发第二段攻击) 给一个转换条件attack;attack1hA的转态顺序优先转换到attack1hB;然后修改过渡。这样就可以实现基础的二段攻击。...原创 2019-01-04 19:17:23 · 236 阅读 · 0 评论 -
Rearrange Fall State(重新修正降落状态)
解决问题:在高处跳落的时候后半段回垂直下落。因为在OnJumpExit里面有写到当on jump状态的时候地面是锁死的所以就会失去位移。修改代码: /// <summary> /// Message processing block /// </summary> public void OnjumpEnter() { ...原创 2018-12-16 11:24:32 · 163 阅读 · 0 评论 -
Use On Ground Sensor(使用地面侦测器)
只要装到东西outoutcol.length就不等于0,那么就向父级发送message:OnGroundSensor: if (outputCols.Length != 0) { SendMessageUpwards("IsGround");//发送isground信号给父级 //foreach (var col in outpu...原创 2018-12-16 10:41:05 · 245 阅读 · 0 评论 -
Camera Vertical Rotate(相机垂直旋转)
垂直的旋转(camreaHandle的x旋转的效果):要将旋转的角度控制在-40到30之间,注意不能用rotate的方法去调整角度,会发生同位角的问题到一定角度会突然跳到同位角位置。代码增加:public class cameracontroller : MonoBehaviour { public PlayerInput pi;//用来在update里面调整 public f...原创 2018-12-26 21:57:02 · 978 阅读 · 0 评论 -
Camera Horizontal Rotate(相机水平旋转)
水平旋转和垂直旋转分别控制:水平旋转通过playerhandle直接控制,然后在playhandle下面再建一个空对象cameraHandle控制垂直旋转(将空对象拉到脖子的位置),这样就通过两个点控制旋转。在maincamera下面挂程式码(cameracontroll):public class cameracontroller : MonoBehaviour { public ...原创 2018-12-26 21:09:33 · 1209 阅读 · 0 评论 -
Add On Ground Sensor(新增落地侦测器)
判断碰撞框是否触地在PlayerHandle下面增加代码On Ground Sensor原创 2018-12-14 23:18:09 · 231 阅读 · 0 评论 -
Actor walk(角色行走)
当摇杆推到(0,1)时摇杆位置距离原点位置长度是1,那么可以确定是向前走动画,但是当摇杆位于蓝色时,我们需算出这时摇杆距离原点的长度(勾股定理),进而确定动画权重。补充之前代码完成玩家通关键位控制角色旋转以及前后左右移动:using System.Collections;using System.Collections.Generic;using UnityEngine;public...原创 2018-12-09 11:14:35 · 326 阅读 · 1 评论