Unity基础包 刚体FPS RigidbodyFirstPersonController 脚本研究

版本:unity 5.3.4  语言:C#

 

今天又研究了一个脚本。

 

刚体的第一人称,不过这个脚本没有像之前的FPS脚本一样,加那么多另外的脚本,唯一一个就是MouseLook,这个脚本我们之前分析过了,就不再赘述了。


所以整个看下来都是一个比较完整的FPS模型,个人喜欢用这个刚体实现,因为以后用其他什么力都比较方便。

 

下面上代码:

// 刚体FPS移动主脚本,用刚体和胶囊组件代替了Character Controller组件
// 提醒一下,这个脚本有两百多行,稍微有点混乱的,建议先看看都有些什么属性留个印象,然后按照Start、Update、FixedUpdate一步步按照逻辑执行顺寻看过去会轻松很多
[RequireComponent(typeof (Rigidbody))]
[RequireComponent(typeof (CapsuleCollider))]
public class RigidbodyFirstPersonController : MonoBehaviour
{
    // 内部类,移动设置
    [Serializable]
    public class MovementSettings
    {
        public float ForwardSpeed = 8.0f;   // 向前走的最大速度
        public float BackwardSpeed = 4.0f;  // 后退的最大速度
        public float StrafeSpeed = 4.0f;    // 倾斜走的最大速度
        public float RunMultiplier = 2.0f;   // 奔跑速度跟行走速度的比例

	    public KeyCode RunKey = KeyCode.LeftShift;  //跑步的按键

        public float JumpForce = 30f;   //起跳的力

        public AnimationCurve SlopeCurveModifier = new AnimationCurve(new Keyframe(-90.0f, 1.0f), new Keyframe(0.0f, 1.0f), new Keyframe(90.0f, 0.0f));  //斜面移动的调节曲线,默认是0到90,从1减到0
        [HideInInspector] public float CurrentTargetSpeed = 8f; //当前的目标速度

#if !MOBILE_INPUT
        private bool m_Running; //当前是否在跑步状态,只有在非手机平台上有效
#endif
        // 更新目标的速度。
        public void UpdateDesiredTargetSpeed(Vector2 input)
        {
	        if (input == Vector2.zero) return;  //没有输入不处理

			if (input.x > 0 || input.x < 0)     //x轴(即水平方向)有输入,速度为倾斜速度
			{
				CurrentTargetSpeed = StrafeSpeed;
			}
			if (input.y < 0)    //y小于0,速度为后退速度
			{
				CurrentTargetSpeed = BackwardSpeed;
			}
			if (input.y > 0)    //y大于0,前进速度,这个写在最后,使其优先级最高,即如果即倾斜又前进,则为前进速度
			{
				CurrentTargetSpeed = ForwardSpeed;
			}
#if !MOBILE_INPUT
	        if (Input.GetKey(RunKey))   //奔跑状态下,速度默认乘以2
	        {
		        CurrentTargetSpeed *= RunMultiplier;
		        m_Running = true;
	        }
	        else
	        {
		        m_Running = false;
	        
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值