愤怒的小鸟siki学院案例学习类继承踩雷<四>

类继承不要忘记继承弹簧长度

punlic float maxDis = 2;改为protected float maxDis = 2;//鸟距离树最大距离

类继承时识别不到鼠标按下Input.GetMouseButtonDown(0)在这里插入图片描述

Input.GetMouseButtonDown(0)应该放到 base.ShowSkill();前面,
因为类继承小鸟里的Update()函数会刷新按下鼠标返回的true,使得无法检测到

类继承OnCollisionEnter碰撞检测不到

小细节
改private void OnCollisionEnter(Collision collision)为private void OnCollisionEnter2D(Collision2D collision)
因为很多情况我们在工程里用的是Rigidbody2D
Rigidbody2D调用刚体时同理可试
另外触发检测和碰撞检测同时用可能会出错,这个我还没解决

刚体2D和刚体一点都不一样!!!

我抄了一个冲击波的代码:
https://blog.csdn.net/qq_37254525/article/details/105565245
但是他调用的刚体是这个Rigidbody rigidbody = blocks[i].gameObject.GetComponent();
我在工程里挂的是Rigidbody2D,我用了好多种办法和爆炸方案都绕不开Rigidbody,最后才受上面第二点启发,觉得这两可能不是一个东西!
在这里插入图片描述

    private void OnTriggerEnter2D(Collider2D collision){if (collision.gameObject.tag == "Enemy"){blocks.Add(collision.gameObject.GetComponent<pig>());}}
//触发检测public override void ShowSkill()//类继承{if (Input.GetMouseButtonDown(0)){base.ShowSkill();if (blocks.Count > 0 && blocks != null){for (int i = 0; i < blocks.Count; i++){GameObject tObject;tObject = blocks[i].gameObject;print(blocks[i].gameObject.name);Rigidbody2D rigidbody = blocks[i].gameObject.GetComponent<Rigidbody2D>();if (rigidbody != null){print("yyy");Vector3 offset = Vector3.up * 7f;//得到一个方向向量,用于力的施加Vector3 direction = (tObject.transform.position - (gameObject.transform.position - offset)).normalized;//自定义数值multiplier 根据物体质量rigidbody.mass,伤害大小damageStrength,表示质量越大施加的力相应要大些int damageStrength = 300;float multiplier = rigidbody.mass * damageStrength;//方向力Vector3 force = direction * multiplier;rigidbody.AddForce(force);}}}}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部