Quantcast
Channel: Answers by "dubbreak"
Viewing all articles
Browse latest Browse all 68

Answer by dubbreak

$
0
0
There are lots of ways to go about what you're asking. What I'd do (in point form) is: - in the ship collider check if I'm colliding with another ship - if it's another ship, child the shooter one to the steering one (up to you how you differentiate them). The transform of the child will be relative to the parent. - for the shooter shit set a bool to indicate it no longer can steer, in the onupdate portion that checks direction input bool canSteer = true; //in initial object canSteer = false; //once attached //in input on update code if(input.GetKey(player2left)&& canSteer) { //only do steering if enabled } - for the driver/parent do something similar to disable shooting. I'd probably do a single script for both types of ship (so I can reuse it on both) and just set the ship type via an enum. Something like the following (note: this is an example to get you started, don't expect it to work.. I mean it compiles, but that's to make sure the syntax is ok): using UnityEngine; using System.Collections; public class CombiningShip : MonoBehaviour { public enum ShipType { shooter, steerer}; public ShipType shipType; public enum ControlInputs { player1, player2}; public ControlInputs inputToUse; public bool CanSteer; public bool CanFire; string player1firekey = "b";//just for example so code compiles, not the way to do this string player1moveleft = "a";//again for example void Start () { CanFire = true; CanFire = true; } void Update () { switch (inputToUse) //for example, plenty of ways to do this { case ControlInputs.player1: { if( Input.GetKey(player1firekey) && CanFire ) { //do fire } if(Input.GetKey (player1moveleft) && CanSteer) { //move left } } break; case ControlInputs.player2: //do stuff for 2nd play controls break; } } void OnTriggerEnter(Collider other) { var possibleShip = other.GetComponent(); if(possibleShip != null) { if(possibleShip.shipType==ShipType.shooter)//other ship is shooter { possibleShip.CanSteer = false; //stop if from being able to shoot possibleShip.transform.parent = this.transform; //child ship to this one this.CanFire = false; //stop this one from firing } } } }

Viewing all articles
Browse latest Browse all 68

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>