您的位置:首页 > 其它

我的游戏开发笔记(三):扔东西与跟踪。

2015-08-01 18:26 239 查看
投掷同样是角色的动作,写入控制类中。

不要忘记给定义一个“投掷”状态。

public bool trowing = false;
然后就可以执行投掷的方法:

void ApplyThrowing()
{
if (lastTrowTime + 0.5 > Time.time)
return;
if (picking && !trowing &&!kicking)
{
SendMessage("DidThrow", SendMessageOptions.DontRequireReceiver);
}
else
{
Debug.Log("你没有任何武器噢亲!请捡起一个。");
}
}


接下来是DidThrow方法,注意当角色把东西投掷出去后,角色又可以捡东西了,把picking置0,修改投掷物品的父组件,让它到外面去不跟人一起跑。

然后给所投掷的物品添加一个AutoCatch跟踪类。这时候人物处于投掷状态,把trowing置为1。

void DidThrow()
{
GameObject target = GameObject.FindWithTag("Enemy");
if (target != null)
{
picking = false;
Transform weaponNow = gameObject.transform.FindChild("rootJoint").FindChild("torso").FindChild("shoulders").FindChild("shoulderRight").FindChild("elbowRight").FindChild("wristRight").FindChild("handRight").FindChild("weaponPos").FindChild(weaponName);
GameObject goWeaponPos = GameObject.Find("WeaponObject");
weaponNow.parent = goWeaponPos.transform;
weaponNow.localScale *= 5;
weaponNow.gameObject.AddComponent<AutoCatch>();
weaponNow.gameObject.GetComponent<AutoCatch>().target = target.transform;
trowing = true;
lastTrowTime = Time.time;
_characterState = CharacterState.trow;
}
else
{
Debug.Log("没有找到目标。");
return;
}
}


至于AutoCatch类(即跟踪类)很简单,首先要了解transform.LookAt这个方法的作用,就是让对象看向目标对象,对准后移动就行了。

void Update()
{
transform.LookAt(target); //物体朝向鼠标
transform.Translate(Vector3.forward * Time.deltaTime * 10f);
}


完工,至于投掷动作的部分,跟之前描述的一模一样,就不细说了。

最后附上一个坑爹跟踪图



如果需要爆炸效果,就把爆炸效果拖到武器上,碰到敌人就可以爆炸了。

喔!对了,还有个自转功能,我的这个飞镖武器怎么可能不能转动呢?

就一行代码:

gameObject.transform.Rotate(Vector3.up * Time.deltaTime * 300f);
用到右手螺旋定则,该补补物理课了。

每天进步一点点...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: